家裡是用中華電信FTTB的VDSL,設定實際上就是PPPoE的設定,而我使用FreeBSD+pf+mpd當NAT。
雖然中華電信大部分情況下都滿穩的,不大會斷線(可能VDSL過熱、機房改設定...等原因吧),但有時候就是會不知道什麼原因斷線,mpd上關於重新連線的設定雖然有加,但似乎沒啥效果,斷線後就是沒IP不會重新連線。
這次又發生了這樣的情況,為瞭解決這樣的問題,寫了個超簡單斷線檢查Script,在發生PPPoE斷線時自動把電腦重新開機。
#!/bin/tcsh
if(== `/sbin/ifconfig | /usr/bin/sed '/-->/\\!d' | /usr/bin/awk '{ print $2 }'`) then
/sbin/reboot
endif
程式碼超級簡單,當執行它之後,它會執行
/sbin/ifconfig | /usr/bin/sed '/-->/\!d' | /usr/bin/awk '{ print $2 }'
也就是執行ifconfig,然後找「-->」,找到後把第二個字串取出(PPPoE取得的IP),如果找不到,顯然就是PPPoE斷線了。
接著透過 tcsh 的 if 判斷式,判斷上述指令「找不到時」,就執行裡面的指令
/sbin/reboot
完成後改好權限,把它放入/etc/crontab中
*/30 * * * * root /usr/local/bin/disconnect-check.sh
如此一來,每30分鐘它都會執行一次,看看PPPoE有沒有秀斗,如果秀斗了,就把電腦重開。
我有測試過,應該是能夠work的。
2009年6月28日
FreeBSD MPD PPPoE斷線檢查Script
標籤: 電腦
訂閱:
張貼意見 (Atom)
3 意見:
用 monit 來監控也蠻方便的,它本身可以設定些判斷邏輯(ex:ping 不出去, 某個port 沒開), 條件成立的話可以執行其他程式 .. ^^ 只是 daemon 還是會佔些記憶體啦 ..
長知識了~
謝謝您的介紹,我會拿來玩玩看的,好用可以換上去用,或者用在其它地方(我看它可以監控的東西很多)。
感謝分享
不過
reboot會不會太殺?
網路不穩不就30分鐘重開一遍
killall ppp;ppp -ddial my_profile_name就好啦
只檢查IP存不存在好像也有點草率
我遇過幾次IP還在卻無法連線的
可能要多判斷一些條件吧
張貼意見