/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
次の2つのサーバーを持つファイルがあります。
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