背景:Wi-Fi接続が突然ダウンすることがあるので、Sudo ifconfig wlan0
と入力してWord RUNNING
を確認します。対応する行は次のようになります。
UP BROADCAST RUNNING MULTICAST [...]
接続がダウンした場合、RUNNING
設定はありません。何にも接続できませんが、インターフェイスはまだアップしています。
RUNNING
の状態を定期的にチェックするスクリプトを書くことを考えています。その文字列を抽出するには、awk
を使用すると、Sudo ifconfig wlan0 | awk '/RUNNING/ {print $3}'
のようになります。
Ifconfigの出力を解析する代わりにファイルシステムをチェックするなどの別の方法はありますか?
私はDebian Wheezyを使用しています。
ありがとう。
詳細:
わかりました。調査を行い、概念的な混乱を解消しました。
UP
フラグとRUNNING
フラグは異なります。 1つ目は、インターフェースが「現在初期化されている」[1]、つまり「システムがインターフェースにリソースを割り当てた」[2]ことを意味します。パケットの送信については何も述べられていません。
RUNNING
フラグは、実際にはパケットが送受信されていることを示します。どうやらこのフラグは、たとえばイーサネットケーブルが接続されていません。
[1] https://docs.Oracle.com/cd/E19253-01/816-4554/ipconfig-141/index.html
[2] https://stackoverflow.com/questions/11679514/what-is-the-difference-between-iff-up-and-iff-running
ワイヤレス接続で何が起こっているのかわかりませんが、結果は同じです。接続が完全に失われている間、インターフェイスはアップのままです(wi-fi LEDライトは私のラップトップでオンのままです)。
ifconfig -s
やnetstat -i
などのコマンドを使用する代わりに、次のファイルをチェックしてWi-Fi接続ステータスを監視できます。
/sys/class/net/wlan0/flags
は、デバイスがオンかオフかを示します。パケット送信については何も通知しないため、接続が機能しているかどうかを確認することはあまり役に立ちません。その内容/値は0x1003
(オン)および0x1002
(オフ)です。
/sys/class/net/wlan0/operstate
は、接続が機能している(パケットが送受信されている)かどうかを示します。このファイルは、RUNNING
によって表示されるifconfig
フラグと同等です。値はup
とdown
です。
/sys/class/net/wlan0/carrier
は/sys/class/net/wlan0/operstate
と同じように機能します。値は1
(上)と0
(下)です。デバイスの電源がオフの場合、ファイルは空です。