我需要/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