#!/bin/bash
COUNT=100
SIZE=100
INTERVAL=0.2
for myHost in `cat /files0/home/singhtr/input`
do
echo $myHost
ping -i $INTERVAL -q -n -s $SIZE -c $COUNT $myHost|grep -i packet
done
入力ファイル:
# cat input
4.2.2.2 abc ATT
8.8.8.8 def BCC
以下のように入力ファイルから複数の値を印刷する方法
予想出力:
IP of the device: 4.2.2.2
Device Name: abc
customer name:ATT
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
など。
bash / shellスクリプトでこれを達成したいと思います。
ベストアンサー1
#!/bin/bash
while read myHost
do
COUNT=100
SIZE=100
INTERVAL=0.2
IP=$(echo $myHost | cut -d " " -f1)
NAME=$(echo $myHost | cut -d " " -f2)
CUSTOMER=$(echo $myHost | cut -d " " -f3)
PING=$(ping -i $INTERVAL -q -n -s $SIZE -c $COUNT $IP | grep -i packet)
echo "IP of the device: $IP"
echo "Device name: $NAME"
echo "Customer name: $CUSTOMER"
echo "$PING"
echo ""
done < /files0/home/singhtr/input
これが問題に対する考えられる解決策の1つです。出力したいものをcut
選択してください。その後、field
簡単なコマンドでecho
出力します。一度に 1 行ずつファイルを読み取るには、次のようにします。
while read LINE
do
...
done < FILE
編集する
定期的にスクリプトを実行するには、スクリプトの作成を検討する必要があります。入力して現在ログインしているユーザーを表示cronjob
できます。スケジュールをスケジュールするには:crontab -l
cronjobs
cronjob
$ crontab -e
crontabを編集します。たとえば、次のように挿入します。
*/15 * * * * /path/to/script >> /path/to/log_\`date +%s\` 2>&1
cronjob
これにより、15分ごとにその場所で実行され、Unixタイムスタンプサフィックス(1549883612など)を含むファイルで発生する可能性のあるエラー/path/to/script
と出力を記録するスクリプトが生成されます。/path/to/log_