我想在多台机器上运行相同的Unix命令集。我知道ssh和下面的东西。我想编写一个shell脚本来执行此操作。我可以访问bash和ksh,而且我在Linux Red Hat 5上。
ssh root@ip "echo \$HOME"
但是,我有两个问题:
答案 0 :(得分:7)
您应该使用key based authentification,可能与ssh-agent
结合使用以记住密钥密码。
您可以调用 sh -c
作为命令,并向其传递一个包含要执行的命令列表的字符串。ssh
在远程计算机上调用shell ,因此您可以将命令列表作为字符串传递。
例如:
$ ssh user@ip "echo 'Hello world'; whoami; cd / ; ls"
答案 1 :(得分:1)
使用ssh-agent为所有命令设置身份验证。或者将多个命令放入一个shell脚本中。
答案 2 :(得分:0)
将命令列表发送到远程shell。可能的解决方案:
使用"
,转义换行符以格式化代码,并使用;
结束每个子语句。
缺点:"
应该在命令列表中使用不。
ssh user@ip "\
echo 'Hallo sir, how are you doing?';\
whoami;\
cd /;\
ls\
"
使用'
并使用常规换行符格式化代码
缺点:'
应该在命令列表中使用不。
ssh user@ip '
echo "Hallo sir, how are you doing?"
whoami
cd /
ls
'
注意:在相应的语句中使用"
或'
不一定会导致错误。虽然你可能会得到意想不到的结果。