bash脚本可读取文件并远程处理命令。 当前仅处理第一行(服务器1)
需要在server1上远程处理3个命令,然后在server2上远程处理......
#!/bin/bash
while read line; do
sshpass -f password ssh -o StrictHostKeyChecking=no user@$line zgrep "^A30=" /var/tmp/logs1/messages.* | >> Output.txt
sshpass -f password ssh -o StrictHostKeyChecking=no user@$line zgrep "^A30=" /var/tmp/logs2/messages.* | >> Output.txt
sshpass -f password ssh -o StrictHostKeyChecking=no user@$line zgrep "^A30=" /var/tmp/logs3/messages.* | >> Output.txt
done < file1
文件1:
server1
server2
server3
答案 0 :(得分:4)
sshpass
正在从与while循环相同的文件描述符中进行读取,并在read
能够读取之前耗尽该输入。最好的办法是显式关闭其标准输入sshpass <&- ...
或从/ dev / null sshpass < /dev/null
重定向。
另一种选择是让sshpass
从脚本继承stdin并从其他文件描述符读取:
while read line <&3; do
...
done 3< file1