2017-09-01 87 views
0

我在執行遠程命令時遇到問題。如果我通過登錄到遠程機器來執行命令,它就可以工作。但是,如果我從筆記本電腦向遠程機器執行相同的命令,它將返回不同的狀態碼。爲什麼linux遠程命令或bash腳本不能返回正確的輸出?

Local execution on 192.168.0.166: 
[email protected]:~# virsh list --state-shutoff | grep Qcow2 | wc -l 
1 

Remote Command execution: 
[email protected]:~# ssh [email protected] 'virsh list --state-shutoff | grep Qcow2 | wc -l' 
[email protected]'s password: 
0 

我嘗試過不同的場景,但沒有運氣。有沒有人遇到同樣的問題?

+1

不知道有什麼問題,但'ssh roo[email protected] virsh list --state = shutoff | grep -Fc Qcow2'? (用'grep -c'代替'grep | wc -l'只是一個優化,這裏不是真正的牛肉 - 主要是在本地運行'grep',因爲沒有理由將它作爲'root '在遠程服務器上。) – tripleee

+1

(...除非輸出很大,並且您希望避免通過遠程管道發送它。) – tripleee

+0

仍然無法正常工作。 -c選項不會幫助。在執行遠程命令後,它總是返回0. –

回答

2

您必須添加一個僞終端才能在遠程服務器中執行復雜命令。試試這個:

ssh -t [email protected] 'virsh list --state-shutoff | grep Qcow2 | wc -l' 

參考man頁的ssh獲得更多信息。

+0

酷男。它的工作。是的,會檢查這個僞終端的東西。 –