Mac
Network
MacOSX
WiFi

MacでWiFi通信が切れたときに通信デバイスを自動で再起動するやつ

目的

私の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