你好,我正在寻找一个软件或某种技术,使我能够在一个终端窗口中执行以下操作:
将启用 ssh 的机器列表作为输入,其中包含登录名、密码和脚本路径信息,如下所示:
login:[email protected]/path/to/script/run.sh
login:[email protected]/path/to/script/run.sh
打开与这些机器的 ssh 连接并远程运行指定的脚本。
- 所有脚本的输出都应传输到我的本地窗口。
- 当我发送 Ctrl-C 之类的信号时,我想终止远程脚本,然后终止连接。如果我的机器宕机,远程脚本也会被终止,这是一个巨大的优势。
如果我可以在 Cygwin 终端中使用它,那将是一个加分项,因为我就是用的这个,但我愿意尝试任何可以完成这个的方法。
答案1
我假设你正在使用 OpenSSH。通过编程给 ssh 提供密码是故意设计的,因为这通常不是一个好主意。除了使用密码,你还可以使用公钥认证如果是这样,下面应该可以解决问题:
for cmd in [email protected]:/path/to/script/run.sh [email protected]:/path/to/script/run.sh; do
ssh ${cmd%%:*} ${cmd#*:}
done
答案2
您将需要公钥认证,您还需要像 PSSH 这样的东西,它是一个基于 python 的工具,用于运行多个并行 ssh 会话。
答案3
如果你能写 Perl,你应该检查一下网络::OpenSSH::并行。
它可以使用公钥或密码验证登录远程主机并并行运行编程任务。