24小時斷線288次,代表每5分鐘斷線一次,如此可怕的斷線頻率我到第24小時才發現,真的是反應有夠慢的=.=a,而且昨晚還是很開心的在上網,直到今天有下載東西才感到有點怪怪的。

為什麼會有如此規律的斷線頻率呢?因為我發現CP值很高的居易 Vigor2104 分享器,雖然具有高達15000的 session 數量,但是其實到12000時網路就感覺開始緩慢了,網路變慢是件很難受的事情,當下載變慢時更有不爽快的感覺,於是打算當 session 超過12000時讓 Vigor2104 自動重新啟動,其實重新撥接就可以,只是我找不到重新撥接的 command。

當然身為一個嫩嫩工程師,就該想出個嫩嫩的方法來解決這問題,於是小小的寫了一個 script,每五分鐘檢查一次,當 session 數超過12000就自動重啟。以下是我的 script 內容,有興趣卻看不懂再問吧!
#!/bin/bash
function show_session {
    echo open 192.168.22.66
# 以上是分享器ip
    sleep 1
    echo ilovewawa
# 以上是密碼
    sleep 1
    echo show session
# show session 指令
    sleep 5
    echo quit
}
function sys_reboot {
    echo open 192.168.22.66
# 以上是分享器ip
    sleep 3
    echo ilovewawa
# 以上是密碼
    sleep 3
    echo sys reboot
# 重新啟動的指令
    sleep 1
    echo quit
}   

n=`show_session | telnet | grep Current | awk '{ print $5 }'`
if [ $n -gt 10000 ] ; then
    sys_reboot | telnet
    echo "DrayTek Vigor2104 Session $n Reboot at `date +%H:%M`" | mail -s "DrayTek Vigor2104 Session $n Reboot at `date +%H:%M`" 123@yabe.co
# 以上是重新啟動電子郵件通知
fi

這簡單的幾行字解決了自動重啟的問題,但是有時候明明 session 不多,但是網路還是很慢,我就會想重新啟動一下,之前都是乖乖的輸入密碼登入後下指令重啟,昨天心血來潮寫了一支懶人 script,執行後就直接重啟,如下。
#!/bin/bash
function sys_reboot {
    echo open 192.168.22.66
        sleep 3
        echo ilovewawa
        sleep 3
    echo sys reboot
    sleep 1
    echo quit
}   

sys_reboot | telnet

問題就在於我傻傻改了原本 crontab 應該會執行的 script,就變成每5分鐘重新啟動分享器一次,夠白癡了,寫這篇文章來展示自己的白癡之外,順便分享這個小小的 script。再補充一點,我的 script 把 session 超過10000就重新啟動了,因為到 session 到12000時反應就很慢了,無法準確利用 sleep 來控制指令輸入的時刻,所以改成10000囉!

更多資訊請參考:
最新超值旗艦機開箱
比螺旋燈泡還省電的迷你 NAS
26800mAh筆電行動電源