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`"
[email protected]# 以上是重新啟動電子郵件通知
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囉!