我编写了一个简单的脚本,它运行在给定的主机列表中,并在这些主机上执行给定的命令。 该脚本基本上看起来像:
while read host; do
ssh -f $user@$host $@
echo < servers
我希望能够运行脚本,以便它开始“监听”stdin中的行并在循环中运行它们而不是$ @。 该脚本将通过正常终止 - ctrl + c ..
停止工作有什么想法吗?
答案 0 :(得分:2)
如果我正确地阅读了这个问题,你想要向一堆服务器发送一组命令,所有这些命令都是单独传递的。
为此,您应该将内部循环包装在外部读取循环中;类似于:
while read command; do
while read host; do
ssh -f $user@$host "$command"
echo
done < servers
done
运行时,您可以键入命令,并在所有服务器上执行。解决发送到远程系统的shell转义字符的问题是开发人员的一项练习。
答案 1 :(得分:0)
你的脚本已经在做了!只需了解它是如何工作的 - 只需将其保存到some.bash文件中:
user="myuser"
while read host; do
ssh -f $user@$host $@
done
$ @表示从命令行添加剩余参数,如果使用none,则不会添加任何
读取主机会读取该行 - 而不只是单词。
所以基本上,当你运行它时:
www.somehost.com --> ssh -f myuser@www.somehost.com www.somehost.com other parameters --> ssh -f myuser@www.somehost.com other parameters