web-dev-qa-db-ja.com

バックグラウンドでインターネット接続を常にチェックするための最良の方法は何ですか?

ネットワークカードの機能に問題があります。Wi-Fi接続レベルが変わらないのに、インターネットがしばらくすると消えます。同じWi-Fiスポットに再接続すると、この問題が解決します。

インターネット接続を継続的にチェックする回避策スクリプト(たとえば、10秒ごとに1回のチェック)を作成し、それが消えた場合、スクリプトはWi-Fiに再接続します。 pingを使用したかったのですが、そのマニュアルには、自動スクリプト中にpingを使用するのは賢明ではないと書かれています。

$ uname -a
Linux NS-COMP 4.11.0-13-generic #19~16.04.1-Ubuntu SMP Wed Aug 2 20:06:21 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

$ lspci -knn | grep Net -A2
03:00.0 Network controller [0280]: Ralink corp. RT3290 Wireless 802.11n 1T/1R PCIe [1814:3290]
    Subsystem: Foxconn International, Inc. RT3290 Wireless 802.11n 1T/1R PCIe [105b:e055]
    Kernel driver in use: rt2860
2
ntrsBIG

Wi-Fiが切断され続ける理由:

debianドキュメント によると、現在ロードされているrt2800pciの代わりにrt2860を使用する必要があります。魔女は、再接続するスクリプトを実行せずに問題を解決します。

サンプルbashスクリプト

Wi-Fi接続が失われたときに接続するためにbashスクリプトを実行する必要がある場合(カーネルモジュールのリロード+再接続)、これはサンプルのbashスクリプトreconnect

#!/bash/bash
if ! [ "$(ping -c1 8.8.8.8)" ]
then
    modprobe -r rt2860
    modprobe rt2800pci
    ip link set wlan0 down
    ip link set wlan0 up
fi

reconnectスクリプトを10秒ごとに実行するには:

while true ; do ./reconnect & sleep 10 ; done &

数時間後にwifiがドロップした場合は、1時間ごとにスクリプトを実行するcronジョブを作成することをお勧めします: ここにいくつかの例

0
GAD3R