fi.csv
サーバーにログインできるファイルname
が含まれています。スクリプトを使用してディスク使用率を確認してください。 ---指定されたしきい値と比較すると、データをファイルに保存する必要があります。path
superuser
main.csv
はいfi.csv
awlp212,/op/s,quick
awlp213,/AM/D,quick
出力:
Consumption is crossing threshold on /op/s on awlp212.
Consumption is 10 % on awlp13.
スクリプトは正しい結果を提供しますが、結果を main.csv
。
for csv in $(cat fi.csv)
do
a_server=`echo $csv | cut -d ',' -f 1`
a_path=`echo $csv | cut -d ',' -f 2`
user_id=`echo $csv | cut -d ',' -f 3`
HOSTNAME=`hostname -A`
ssh -n $user_id@$a_server path=$a_path '
var=$(df -h|grep "$path$"|awk '\''{print $5}'\''|cut -d "%" -f1)
host=$(hostname)
if [[ $var -ge 60 ]]; then
echo "Consumption is crossing threshold on $path on $host."
else
echo "Consumption is $var % on $host. "
fi' > main.csv
done
答え1
あなたはい出力をに保存しmain.csv
ますが、ループを繰り返すたびにファイルを上書きします。直後にリダイレクトを移動しますdone
。
また、リモートシステムであまりにも多くの操作を実行しようとしています。リモートシステムに必要な唯一の目的は、システムを実行することであり、他du
には何もありません。
#!/bin/sh
while IFS=, read -r remote pathname user
do
ssh -n -l "$user" "$remote" "df -h '$pathname'" |
awk -v h="$remote" -v p="$pathname" '
NR == 2 {
if (($5 + 0) > 60)
level="WARNING"
else
level="INFO"
printf "%s: %s disk usage for %s on %s\n", level, $5, p, h
}'
done <fi.csv >output.txt
ここでは、カンマで区切られた入力を読み、目的のパスをfi.csv
呼び出し、ネイティブを使用して結果を解析します。出力はに記録されます。du -h
awk
output.txt
私たちはthisが2つの行を返すことを知っているので、コード内の2番目の行()にのみ興味を持ってdf
ください。次に、パーセンテージが60を超えるかどうかに応じてプレフィックスが付けられているか、現在のディスク使用率の割合を示すメッセージを出力します。awk
NR == 2
WARNING
INFO