#目的
私のMacだと、喫茶店等の公衆WiFiを使っていると通信ができなくなることが多々ある。
アクセスポイントには接続していてIPも払い出されているのに、通信だけできないのだ。
WiFiデバイスをOff→Onすれば直る。
自宅だとWiFiが切れたことはないので、おそらくアクセスポイント側の問題だと思うが調査のしようがない。
頻繁に起こり手動でOff→Onしてたらイライラしてきたので、自動でやってくれるスクリプト書いた。
自動スクリプト
WiFiアクセスポインント(デフォルトゲートウェイ)にpingを一定間隔でうって、返答なければWiFiデバイスを再起動するだけのもの。
#!/bin/bash
# WiFi nic
DEVICE='en0'
# ネットワーク確認の応答待ち時間(秒)
TIMEOUT=1
# ネットワーク確認の間隔(秒)
INTERVAL=10
# デフォルトゲートウェイIP
IP_ADDR=$(netstat -rn | grep UGS | awk '{ print $2 }')
while :
do
# alive monitoring wi-fi default getway
ping -c 1 -t $TIMEOUT $IP_ADDR >/dev/null 2>&1
# network interface restart
if [ $? -ne 0 ]; then
NOW=$(date "+[%Y/%m/%d %H:%M:%S]")
echo $NOW "network disconnected"
/usr/sbin/networksetup -setairportpower $DEVICE off
/usr/sbin/networksetup -setairportpower $DEVICE on
fi
sleep $INTERVAL
done