2014-09-30 161 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