2020年8月16日日曜日

無通信が続いた時に再起動する方法

経緯

先日の投稿でSORACOMの無通信タイムアウトを回避するためにpingを定期送信する処理を記載しましたが、この処理を入れても再起動すると「ping: pong.soracom.io: 名前解決に一時的に失敗しました」というのが継続的に発生してネットワークにつながらなくなる事象が2回に1回くらいの割合で発生するようになりました。

※関連しているかもしれない記事
特定地域向け IoT SIM (旧日本向け Air SIM) SORACOM Air for セルラー トラブルシューティングガイド【接続できなくなった場合】

できれば原因を究明したいところでしたが、軽くググってってもわからなかったし再起動で直る(また繋がるようになる)ことがわかっていたので、つながらない状態が10分続くと再起動するように処理を改造しました。


60秒周期にsoracomにpingを飛ばして、10回失敗したら再起動する処理

この処理を、/usr/local/bin/PingSend.pyに保存します。参考にしてみてください。

 #!/usr/bin/python
 # coding: UTF-8

 import time
 import os

 count=0

 while True:
     time.sleep(60)
     ret = os.system('ping -c 3  pong.soracom.io')
 
     if ret==0:
         count=0

     else:
         count=count+1

     if count>=10:
         os.system('shutdown -r now')

0 件のコメント:

コメントを投稿