从shell脚本SSH另一个shell脚本

时间:2012-10-19 18:37:12

标签: shell ssh

我在host1,我希望shell脚本shell1.sh在另一台主机shell2.sh中执行另一个shell脚本host2。需要ssh相同。对不起,我对这个脚本来说并不陌生

所以:

host1$ sh shell1.sh ----ssh---->  host2$ shell2.sh

2 个答案:

答案 0 :(得分:2)

shell1.sh上:

#!/bin/sh

ssh host2 '/bin/sh /path/to/shell2.sh'

并且,如果shell2.sh文件不在host2上:

#!/bin/sh

ssh host2 < /path/to/shell2.sh

在第一个替代方案中,您将向ssh传递第二个参数,它将其解释为在远程计算机上执行的命令。

来自man ssh

  

如果指定了命令,则会在远程主机而不是登录shell上执行。

在第二个脚本上,shell2.sh上的命令通过stdin传递给ssh命令,然后stdin将它们转发到host2的shell,最后执行它们。

答案 1 :(得分:1)

你可以这样做:

local.sh

#!/bin/bash
hostname
whoami
ifconfig

然后,使用本地脚本,您可以远程运行它:

ssh host < local.sh

远程主机的STDIN shell将与本地shell脚本连接