###実現したいこと
centos7
pingを使用し、死活監視のためのシェルスクリプトを作成したいです。
条件は以下です。
・4発して3発失敗ならメール送信
・ping -c1で1発ずつ実行した結果を評価してNGなら繰り返すという風に書く
1発pingしてOKならば、OK表示。NGであればNG表示しメール送信というシェルスクリプトは作成できました。
どうも書き方がわからないので、参考サイトや書き方がありましたら教えてください。
よろしくお願いします。
試したこと
bash
1#!/bin/sh 2IP_ADDR_ARRAY="IPアドレス"; 3 4NUM=0 5for IP in ${IP_ADDR_ARRAY[@]} 6 do 7 ping ${IP} -c 1 >> /dev/null 8 if [ $? == 0 ] ; 9 then 10 echo "OK" 11 else 12 echo "NG" | echo "NG" | mail -s "Alert of server down" -S smtp=SMTPサーバ -r 送信元アドレス 送信先アドレス 13 fi 14 NUM=expr ${NUM} + 1 15 done
先頭行の行頭に 「#」がついていませんね。それと実行権限はついていますか?
提示するコードは```でくくってください。(マークダウン) インデントなどの情報が欠落しますし、何より読みづらくなります。https://teratail.com/help/question-tips
記載したシェルスクリプトは問題なく実行することはできます。
問題はここから、条件(4発して3発失敗ならメール送信)を書き加えたいのです。
条件が少しあいまいなようです。ping4発は必ずするのですか?そのうち3回NGならメール送信ということでしょうか。
一般的にはpingが1回OKであればそのまま抜け、最大で4回(または3回)NGなら、NG報告としてメール送信というようなかたちかと思います。(リトライ)ですが、念の為に4回は必ずpingを試す、と言うかたちも分からないではないです。
それと、マークダウン、ありがとうございます。```でくくっていただいたようですが、ちょっと違います。
```bash
#!/bin/sh
IP_ADDR_ARRAY="IPアドレス";
```
などとします。teratailのヘルプをご覧ください。
ping4発は必ずします。そのうち3回NGならメール送信ということです。
回答2件
あなたの回答
tips
プレビュー