我有个问题。我正在使用的硬件和软件:Raspberry pi、3G 调制解调器 - 华为 e1550、sakis3g 和 UMTSkeeper 来处理连接。我也在用https://github.com/Lora-net/packet_forwarder对于我的项目,它会在启动时自动启动,延迟 180 秒,以便 3g 调制解调器连接到网络,然后 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/
。您可以在其中放置一个 shell 脚本,该脚本将在建立 ppp 链接时执行。
/etc/ppp/ip-up
更多详情请参阅 的内容。