ppp0に再接続すると、sakis3gとUMTSkeeperを使用してプログラム(スクリプト)を自動的に再起動する

ppp0に再接続すると、sakis3gとUMTSkeeperを使用してプログラム(スクリプト)を自動的に再起動する

質問があります。私が使用しているハードウェアとソフトウェア:Raspberry pi、3Gモデム - Huawei e1550、sakis3g、UMTSkeeperが接続を処理します。私も使っています。https://github.com/Lora-net/packet_forwarder私のプロジェクトでは、起動時に自動的に起動し、3gモデムがネットワークに接続するまで180秒遅れて、packet_forwarderがデータを自分のサーバーに送信します。 3gモデムの接続が切断され(起動後2〜3時間後に再接続される可能性があります)、UMTSkeeperが通信を再取得するまで正常に動作します。その後、 packet_forwarder はサーバーへのデータ転送を停止します。私が見るには、packet_forwarderがネットワーク接続の状態を監視する方法を知らず、何も失われた場合はネットワークに再接続しないようです。助けてください。ネットワークが戻ってきたときにどのように自動的に接続することができますか?

いくつかのログと情報:これumtskeeper.log再接続すると:

----
2018-03-13 20:27:32 Testing connection...
2018-03-13 20:27:40 Success... we are online!
2018-03-13 22:11:39 Offline: Network device ppp0 not found or not connected. (n$
2018-03-13 22:11:43 Internet connection is DOWN. Calling Sakis3G connect...
  Sakis3G cmdLine: nice /home/pi/3g/sakis3g connect --sudo --console USBINTERFA$
  Sakis3G says...
  E1550 connected to KYIVSTAR (25503).
  Error: /tmp/sakis3gz.10107.sakis3g: line 3218: warning: command substitution:$

2018-03-13 22:12:11 Testing connection...
2018-03-13 22:12:20 Success... we are online!

これは設定されている場合3gモデムインターフェイスの場合:

ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.151.60.124  netmask 255.255.255.255  destination 10.64.64.64
        ppp  txqueuelen 3  (Point-to-Point Protocol)
        RX packets 106  bytes 7905 (7.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 108  bytes 7617 (7.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

これはtcpdump -AUqポート3000サーバーにデータを送信するポートの場合(3gモデムの接続が失われると、ppp0インターフェースはifconfigリストから消えます):

listening on ppp0, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
-----
-----
tcpdump: pcap_loop: The interface went down
3124 packets captured
3124 packets received by filter
0 packets dropped by kernel

これはpacket_forwarderの自動起動スクリプトです:

#!/bin/bash
sleep 180
sleep 10
gpio mode 7 out
gpio write 7 1
sleep 0.5
gpio write 7 0
sleep 0.5
cd packet_forwarder/lora_pkt_fwd/
./lora_pkt_fwd
exit 0

答え1

あなたが言ったように、packet_forwarder彼が自分でpppリンクの状態を監視できない場合は、その人のためにそれをやる必要があるかもしれません。

packet_forwarder状態を確認して再起動するのに最適な場所です/etc/ppp/ip-up.d/。 pppリンクが確立されたときに実行されるシェルスクリプトをここに配置できます。

/etc/ppp/ip-up詳しくは内容をご覧ください。

関連情報