実行時にホストが使用可能になるまでpingを開始し、ホストにアクセスできるようになったら、コマンドを実行して実行を停止するbashスクリプトをファイルに書き込もうとします。スクリプトを作成しようとしましたが、スクリプトはカウントが終了し、
そして、プロセスをバックグラウンドに置く必要がありますが、ドル$
()記号を使用してスクリプトを実行すると、まだフォアグラウンドで実行されます。
#!/bin/bash
ping -c30 -i3 192.168.137.163
if [ $? -eq 0 ]
then /root/scripts/test1.sh
exit 0
else echo “fail”
fi
ベストアンサー1
私はこれを簡単な一行として使います。
while ! ping -c1 HOSTNAME &>/dev/null; do echo "Ping Fail - `date`"; done ; echo "Host Found - `date`" ; /root/scripts/test1.sh
HOSTNAME
pingしたいホストに置き換えます。
バックグラウンドに入れる部分を逃した。その行を次のようにシェルスクリプトに入れます。
#!/bin/sh
while ! ping -c1 $1 &>/dev/null
do echo "Ping Fail - `date`"
done
echo "Host Found - `date`"
/root/scripts/test1.sh
バックグラウンドにするには、次のように実行できます。
nohup ./networktest.sh HOSTNAME > /tmp/networktest.out 2>&1 &
HOSTNAME
pingしたいホストと交換してください。この方法では、ホスト名をシェルスクリプトにパラメータとして渡します。
一般的な警告として、ホストが停止すると、ホストがシャットダウンまたは検索されるまで、このスクリプトはバックグラウンドでpingを続けます。だから私はあなたがこれを実行するとそれに留意します。これを忘れると、システムリソースが不足する可能性があるためです。