我想在多台机器上运行同一套Unix命令。我知道ssh和下面的东西。我想写一个shell脚本来做到这一点。我访问的bash和ksh,我在Linux上的Red Hat 5使用ssh执行Unix命令列表
ssh [email protected] "echo \$HOME"
不过,我有2个问题:
- 我不断收到提示输入密码。我怎么能不提示我并自动输入密码?
- 如何执行多个命令?
我想在多台机器上运行同一套Unix命令。我知道ssh和下面的东西。我想写一个shell脚本来做到这一点。我访问的bash和ksh,我在Linux上的Red Hat 5使用ssh执行Unix命令列表
ssh [email protected] "echo \$HOME"
不过,我有2个问题:
你应该使用key based authentification,可能加上ssh-agent
要记住关键密码。
您可以调用
sh -c
作为该命令,并向它传递一个包含要执行的命令列表的字符串。
ssh
在远程机器上调用一个shell,所以你可以传递一个命令列表作为一个字符串。
例如:
$ ssh [email protected] "echo 'Hello world'; whoami; cd/; ls"
使用ssh-agent为所有命令设置身份验证。或者把你的多个命令放到一个shell脚本中。
发送的命令列表的远程外壳。可能的解决方案:
使用"
,逃生换行符格式化代码和结束每个子语句与;
。
缺点:"
应该不是在命令列表中使用。
ssh [email protected] "\
echo 'Hallo sir, how are you doing?';\
whoami;\
cd /;\
ls\
"
使用'
并使用常规换行符格式化代码。
缺点:'
应该而不是在命令列表中使用。
ssh [email protected] '
echo "Hallo sir, how are you doing?"
whoami
cd/
ls
'
注:使用相应的语句内"
或'
不一定会导致错误。虽然你可能会得到不明的结果。
谢谢,这些信息看起来很有帮助。但是,即使在机器1上生成密钥并将其添加到机器2之后,仍然会提示输入密码。你有什么想法吗?这里是我做的: 1.)machine1:ssh-keygen 2.)machine1:ssh-copy-id -i .ssh/id_rsa.pub user @ ip – Matt 2011-03-15 01:25:59
您现在需要启动ssh-agent并使用ssh-add将其添加到您的钥匙串,以防止未来的密码提示。 – MikeK 2011-03-15 13:14:45
请注意,每次登录时都需要这样做。你也可以创建一个没有密码的ssh密钥,但要注意安全隐含性(每个可以读取私钥的人都可以不用密码连接)。 – 2011-03-15 13:49:38