2014-09-30 120 views
0

通常在一個shell腳本,你可以寫,如shell腳本來完成SSH之後進一步命令

command1 
command2 
command3 

命令,他們將被一個接一個執行。

我想寫一個Unix shell腳本SSH到服務器上,然後執行該服務器上的命令。 例如

ssh [email protected] 
ls 

我嘗試這樣做如上所示但LS不顯示輸出。我究竟做錯了什麼?

回答

8

您可以在命令行或stdin中輸入ssh命令。如果你只有一個命令來執行,做:

ssh [email protected] ls 

如果你有多個命令,使用定界符在通過stdin傳遞它們:

ssh [email protected] <<END 
command1 
command2 
command3 
END 
+0

完美。正是我在找的東西。謝謝。 – Kian 2014-09-30 14:22:40

+0

唯一的問題是它會自動將我註銷。有沒有辦法讓我保持登錄狀態? – Kian 2014-09-30 14:33:31

+1

^^添加一行''之前;-) END'的 – anishsane 2014-09-30 14:42:37

2

雖然其他的答案我的問題還是非常好的,我結束了使用一個小的修改後的版本。以爲我會與論壇分享給任何感興趣的人。

ssh -t [email protected] " 
command1 
command2 
command3 
bash -l" 

優點:它不會將您註銷!

非常感謝anishsane和約翰庫格爾曼

+0

請參閱我對John Kugelman的回答的評論。在這裏,'bash -l'仍然從ssh繼承它的標準輸入,但現在'ssh'使用你的本地終端進行標準輸入,而不是這裏的文檔。 – chepner 2014-09-30 15:56:31