linux-如何开始收听stdin并重定向线路?
我编写了一个简单的脚本,它在给定的主机列表中运行,并在这些主机上执行给定的命令。 脚本基本上如下所示:linux-如何开始收听stdin并重定向线路?,linux,bash,Linux,Bash,我编写了一个简单的脚本,它在给定的主机列表中运行,并在这些主机上执行给定的命令。 脚本基本上如下所示: while read host; do ssh -f $user@$host $@ echo < servers 读取主机时;做 ssh-f$user@$host$@ echo ssh -f myuser@www.somehost.com www.somehost.com other parameters --> ssh -f myuser@www.somehost.com o
while read host; do
ssh -f $user@$host $@
echo < servers
读取主机时;做
ssh-f$user@$host$@
echo<服务器
我希望能够运行脚本,这样它就可以开始“侦听”stdin中的行,并在循环中运行它们,而不是$@。
脚本将通过正常终止(ctrl+c)停止工作
有什么想法吗?你的脚本已经在这么做了!只需了解其工作原理-只需将其保存到某个.bash文件中:
user="myuser"
while read host; do
ssh -f $user@$host $@
done
$@表示从命令行添加剩余参数,如果使用“无”,则将不添加任何参数
读取主机将读取行,而不仅仅是单词
因此,基本上,当您运行它时:
www.somehost.com
--> ssh -f myuser@www.somehost.com
www.somehost.com other parameters
--> ssh -f myuser@www.somehost.com other parameters
www.somehost.com
-->ssh-fmyuser@www.somehost.com
www.somehost.com其他参数
-->ssh-fmyuser@www.somehost.com其他参数如果我正确地阅读了这个问题,那么您希望向一组服务器发送一组命令,所有这些命令都是单独传递的 为此,您应该将内部循环包装在外部读取循环中;类似于:
while read command; do
while read host; do
ssh -f $user@$host "$command"
echo
done < servers
done
读取命令时;做
读主机时;做
ssh-f$user@$host“$command”
回音
完成<服务器
完成
运行时,您可以键入命令,并在所有服务器上执行该命令。解决发送到远程系统的shell转义字符的问题对于开发人员来说是一个练习。这必须在bash中吗?
do
缺少一个done
这是从脚本的命令行获取ssh参数,而不是标准输入。