0

この bash スクリプトでは、サーバー リストに、ディスク容量を計算する必要があるサーバーのすべてのリストが含まれています。それらは c1 から c109 までの範囲です。現在、c100-c109 のサーバーの容量は 50% を下回っているため、次のメッセージを取得する必要があります。

「十分なディスク容量があります」

しかし、代わりにこのメッセージが表示されます

「存在しないディスク容量で実行しているようです」

誰かがこれを修正するのを手伝ってくれるなら、それは素晴らしいことです. 説明が必要な場合はお知らせください。以下にスクリプトを示します。

#!/usr/bin/bash
# This script does a very simple test for checking disk space.
for VTIER in `cat serverlist`
do
space=$(ssh -q ${VTIER}@${VTIER} 'df -kh|grep ${ServerName}|cut -c 65-70')
echo "Checking disk space.... in ${VTIER}"
case $space in
[1-6]*)
Message="There is sufficient disk space available - $space full"
;;
[7-8]*)
Message="Keep an eye on the disk space - $space full."
;;
9[1-8])
Message="Better hurry with that new disk -  $space full."
;;
99)
Message="I'm drowning here! - $space full"
;;
*)
Message="I seem to be running with an nonexistent amount of disk space - $space full"
;;
esac
echo $Message
done
4

1 に答える 1

1

あなたのカットは間違っています:

marc@panic:/home/httpd/html$ df -kh|cut -c 65-70




marc@panic:/home/httpd/html$

空白行に注意してください...これは単なる空白ではありません。カット出力です。ブロック サイズを強制するオプションを含めるkと、ブロック サイズ列が削除され、各行が短くなるため、実際には各行の終わりを過ぎたところからテキストが切り取られます。awk を使用した方がよい場合があります。

marc@panic:/home/httpd/html$ df -kh|awk '{print $5}'
Use%
7%
1%
1%
0%
1%
61%
于 2013-05-09T19:08:08.937 に答える