有很多人(公司或個人),都是使用浮動 IP 的 ADSL,這導致 IT 人員進行遠端管理或維護時的困難。
坊間的解決方案多是使用 DDNS ,其他可以通報 IP 變動的工具大多都是要錢的...
其實這樣的程式也不難,要額外收費實在令人難以接受...
廢話不多說,底下就是我寫的WSH程式,
第一次執行後,會把你的 Public IP Address 寄到你指定的信箱,
之後每五分鐘會再 Check 一次 Public IP,如果IP 有變動,才會再寄信通知。
PS.該程式寄信並不需要你自己架Mail Service,可以在網路上找個 SMTP Server來用即可。
On Error Resume Next strDynamicIP = "xxx.xxx.xxx.xxx" ' 這個網址可以替換成你自己喜好的查詢 IP 地址的網站 Set objHTTP = CreateObject("MSXML2.XMLHTTP") Set objRegEx = CreateObject("VBScript.RegExp") Set objEmail = CreateObject("CDO.Message") while true Set colMatches = objRegEx.Execute(objHTTP.ResponseText) For Each strMatch in colMatches ' 網頁內容沒有 IP Address,考慮換個網站吧 ' 每隔 5 分鐘抓一次網頁,Check Public IP
strURL="http://briian.com/files/act/myip-widget.php"
objRegEx.Global = True
objRegEx.Pattern = "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"
objHTTP.Open "GET", strURL, FALSE
objHTTP.Send
strPublicIP = strMatch.Value
Next
if colMatches.Count < 1 then
WScript.Echo "IP Address Not Found !"
end if
' 如果抓出來的網頁只有一個 IP Address,而且跟之前抓的不一樣,表示 IP 有變動,要通知囉
if colMatches.Count = 1 and strDynamicIP <> strPublicIP then
objEmail.From = "寄信人信箱地址"
objEmail.To = "收件人信箱地址"
objEmail.Subject = "Your Public IP : " & strPublicIP
objEmail.Textbody = strPublicIP
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "SMTP Server的FQDN或IP"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "你的E-Mail帳號"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "你的e-Mail密碼"
objEmail.Configuration.Fields.Update
objEmail.Send
strDynamicIP = strPublicIP
end if
' 如果抓出來的網頁內容,超過一個 IP Address,就要改程式去分析網頁囉
if colMatches.Count > 1 then
WScript.Echo "Too Many IPs !"
end if
wscript.sleep 300000
wend
0 意見:
張貼留言