用于查看 /mysqlshare 的脚本存在于所有列表服务器中,仅执行第一次迭代

用于查看 /mysqlshare 的脚本存在于所有列表服务器中,仅执行第一次迭代

我需要/mysqlshare从所有 MySQL 服务器获取详细信息。我已经使用循环编写了一个脚本while read,但它只获取第一台服务器的详细信息,

#!/bin/ksh
file="/home/mysqladm/server_list/server_list.txt"
# while loop
while IFS= read -r a
do
        # display line or do something on $line
        output=`ssh $a df -h | grep mysqlshare`
#echo $a,$output
echo $a ,$output >> /home/mysqladm/server_list/output.txt
done < "$file"

我有server_list.txt一个文件,其中有两个服务器,例如

server_name1,
server_name2,

它将转到 server_name1 并执行df -h并退出脚本。为什么循环不起作用?

答案1

SSH 尝试读取所有剩余的标准输入,因此它打破了循环。您需要将其标准输入连接到 null< /dev/null或执行其他类似操作。

以下是我编写脚本来实现这一目标的方法:

#!/bin/bash
IFS=,
file=servers.txt
logfile=log.txt
while read server
do
        ssh $server<<<"df -h | grep mysqlshare" 2>&1>>$logfile
done < $file

相关内容