Windows PPPoE 自動重撥 Script

七月 25th, 2009

隨著 ADSL 及經濟型光纖網路的普及,有許多人都會在自家架設 server 主機,但如果沒有用分享器而是直接透過 PPPoE 撥接上網的,就很怕網路突然斷線(如忘記繳錢被停掉),雖然說 Windows 內建的連線程式有一個「斷線後重新撥號」的選項,但其實並不好用。比較保險的作法是系統定期檢查對外連線的狀況(ping),一旦發現斷線就自動重新連線。

在網路上可以找到很多這種作法的 Linux 版本,如「Debian Linux: ADSL PPPoE 自動重撥 Script」,但相對 Windows 的討論卻很少,所以就自己寫了一個重撥的 WSH(Windows Script Host),搭配工作排程就可以達到目的。
※ 本方法適用於 XP 以後之 Windows。

Step 1:將下列程式存為 repppoe.vbs,修改連線資訊並放置在安全的地方


DIALNAME = "寬頻連線"              '連線名稱
DIALUSER = "12345678@ip.hinet.net" '連線帳號
DIALPASS = "xxxxxxxx"              '連線密碼

Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run("ping www.hinet.net", 0, true)
If RetCode <> 0 Then
	WshShell.Run "rasdial " & DIALNAME & " /DISCONNECT", 0, true
	WScript.Sleep(3000)
	WshShell.Run "rasdial " & DIALNAME & " " & DIALUSER & " " & DIALPASS, 0
End If

Step 2:設定 Windows 工作排程。(控制台->排定的工作->新增排定的工作)

1
‧選擇步驟 1 的 repppoe.vbs 檔案

2

3

4
‧輸入具有 Administrator 權限的使用者及密碼

5

6

7
‧表示每 30 分鐘檢查一次連線狀況,可依需求修改,然後收工。

※ 備註:
之所以選擇 ping www.hinet.net 而不用 IP 是因為經實驗結果,若網卡有設定 Default gateway,則可能會因為 gateway response 影響連線判斷。

Other, Server, Windows, 程式筆記, 系統筆記 , , , ,

  1. 九月 16th, 2009 at 22:06 | #1

    最近電腦常偶有無故斷線, xp 卻不會自動再去連線, 害我整天擔心程式交易狀況.
    謝謝版大的分享, 趕緊跟著說明 try try 看能否解決網路無故斷線的問題.

    感恩喔~

  2. 十二月 22nd, 2010 at 14:03 | #2

    我来给你踩踩

  3. rain
    九月 11th, 2011 at 21:07 | #3

    感謝您的範本
    給個建議,把rasdial改成rasphone可以避免撥號帳密直接曝光
    但前置作業要先把,提示名稱、密碼、憑證等項目取消,才不會卡在連線的視窗

    DIALNAME = "寬頻連線" '連線名稱

    Set WshShell = CreateObject("WScript.Shell")
    RetCode = WshShell.Run("ping http://www.hinet.net", 0, true)
    If RetCode 0 Then
    WshShell.Run "rasphone " & "-h " & DIALNAME , 0, true
    WScript.Sleep(3000)
    WshShell.Run "rasphone " & "-d " & DIALNAME
    End If

  4. rain
    九月 11th, 2011 at 21:18 | #4

    話說rasdial也有一個方法可以避免明碼曝光

    透過工具把vbs轉成com或exe執行檔,就可以避免明碼。
    而且建立寬頻連線也可以填假的帳密,因為實際是看rasdial後面填的帳密,這樣反而比rasphone還安全

  1. No trackbacks yet.