2017-07-30 117 views
-1

我有一個shell腳本,我在其中執行來自不同主機的ls命令,但是我無法實現此目的。這裏是我下面的colde:來自Shell腳本的SSH

#!/bin/sh  
nodes="hostname1 hostname2" 
cmd="ls -ltrha" 
for node in ${nodes}; do 
    ssh ${node} '`$cmd`' 
done 

這段代碼的問題是,它可以完美的ssh主機名1,但它甚至不執行ls命令,甚至SSH主機名2。

任何想法我在做什麼錯在這裏?

****新編輯**** 我也嘗試了下面的一個套,但只執行了LS沒有SSH

 ssh hostname1 'ls -ltrha' 
+0

請參閱:[在bash中單引號和雙引號之間的區別](http://stackoverflow.com/q/6697753/3776858) – Cyrus

+0

感謝您的評論賽勒斯,但我不認爲問題只是用引號。我只是嘗試運行一個班輪,而只是執行$ cmd而不執行ssh表示。請看看我的文章 –

+0

,請更新您的Q以指示您如何處理來自遠程主機的'password'提示。祝你好運。 – shellter

回答

-1

你可以做到這一點

#!bin/sh 
nodes="hostname1 hostname2" 
for node in ${nodes}; do 
ssh ${node} 
`ls -ltrha` 
done 
0
#!/bin/sh  
nodes="hostname1 hostname2" 
cmd="ls -ltrha" 
for node in $nodes; do 
    ssh "$node" "$cmd" 
done