我觉得有点傻,问什么似乎是一个可以解决Google的问题,但是我试图编写一个重复的任务(1)ssh'ing到远程服务器(2)在我的主目录下运行script.sh,和(3)复制/粘贴输出。
如果我能写一个脚本来为我做这个工作,那将是非常好的。 我写了一些bash脚本,从这些机器scp文件,但从来没有一个在这些机器上运行脚本。
是否有可能在机器1上有一个脚本,并通过机器nlogin并执行机器2上的script.sh,然后在机器1上卸载输出? 如果是这样,怎么样?
这是一个容易的:
ssh user @ host 命令
命令 =详细说明与pipe道和如需要。
与Jeffrey的答案类似,但是有一个单线循环。
for i in "server1 server2 otherserver"; do ( ssh username@$i yourcommand & ); done
这可以让你产生每个任务的后台,所以整个命令只需要从你的工作站上花一点时间。 如果您使用基于密码的身份validation,则需要执行以下操作之一:
所以我想这里真正的问题是如何从机器1到机器2获得脚本,所以你可以执行它,对吗? 有很多方法可以做到这一点。 您可以在计算机1上使用脚本,该脚本首先使用scp将script传输到计算机2,然后运行ssh machine2 script 。
如果你有一致的公钥authentication,那么你就不会被提示input密码。 如果每次login到machine2时都需要input密码,那么您需要使用expect来查看方法,详见本文 。 您应该能够使用autoexpect快速编写必要的期望脚本。
其他方法包括nfs-在所有主机上安装一个共享目录。 在这种情况下,您将脚本文件复制到machine1上的该目录,然后在machine2和所有连接到相同nfs装载的其他计算机上可用。
最后这是一个像cfengine和puppet这样的configurationpipe理工具用某种文件传递机制解决的问题。 在该设置中,客户机连接到中央服务器并在执行之前下载脚本文件。