用于将 IP 信息发送到电子邮件地址的 VBScript
用于将 IP 信息发送到电子邮件地址的 VBScript。
引言
我在家里使用 PPPoE 连接,IP 地址几乎每次都会改变。我通常需要从外部位置连接到我的家庭电脑,但我无法设置固定的远程桌面连接,因为我没有固定的 IP。此外,我需要电脑启动时自动拨号连接,而无需电话指导对方。
本文包含两个简单的脚本,用于
- 拨号连接,并且
- 将 IP 信息发送到电子邮件帐户以供使用
Using the Code
该 VB 脚本使用 CDO 进行电子邮件传输,使用 WMI 进行 IP 获取。由于该脚本已注释,并且 CDO 和 WMI 方法的解释很容易找到,因此这里提供它。
'
' send the IP address via Gmail
'
Sub SendIPInfo()
On Error Resume Next
Dim iMsg, iConf, Flds
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
schema = "http://schemas.microsoft.com/cdo/configuration/"
Flds.Item(schema & "sendusing") = 2
Flds.Item(schema & "smtpserver") = "smtp.gmail.com"
Flds.Item(schema & "smtpserverport") = 465
Flds.Item(schema & "smtpauthenticate") = 1
Flds.Item(schema & "sendusername") = "your-gmail-username@gmail.com"
Flds.Item(schema & "sendpassword") = "your-gmail-password"
Flds.Item(schema & "smtpusessl") = 1
Flds.Update
' message body
strDate = CStr(Date()) & " " & CStr(Time())
strBody = "---===---<br/>IP info YOURCOMPUTER " & strDate & " <br/><br/>"
' read adapters info
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNicConfigs = objWMIService.ExecQuery _
("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
For Each objNicConfig In colNicConfigs
strDescription = objNicConfig.Description
IPAddress = objNicConfig.IPAddress
strIP = ""
For Each s in IPAddress
if strIP = "" then
strIP = s
else
strIP = strIP & ";" & s
end if
Next
strBody = strBody & "<br/>" & _
"Description:" & strDescription & "<br/>" & _
"IP: " & strIP & "<br/>"
Next
strBody = strBody & "---===---"
With iMsg
.To = "Sender Name <your-gmail-username@gmail.com>"
.From = "Receiver Name <your-gmail-username@gmail.com>"
.Subject = "IP info YOURCOMPUTER on: " & strDate
.HTMLBody = strBody
.Sender = "Sender Name"
.Organization = "Your Organisation"
.ReplyTo = "your-gmail-username@gmail.com"
Set .Configuration = iConf
.Send
End With
' release interfaces
Set iMsg = nothing
Set iConf = nothing
Set Flds = nothing
End Sub
SendIPInfo
只需将 YOURCOMPUTER 替换为您的计算机名称,并将 your-gmail-username 和 your-gmail-password 替换为适当的 GMail 身份信息。
将脚本内容(或附带的 ipsend.zip)保存到您选择的位置(我使用的是 C:\etc),并确保该文件夹的安全,仅授予您访问权限(因为该文件包含电子邮件用户名和密码)。
* * *
另一件事是如何在启动时自动拨号 PPPoE 连接。
为此,只需创建一个批处理文件,例如
@echo off
if %1 EQU connect goto l_connect
if %1 EQU disconnect goto l_disconnect
goto l_unknown
:l_connect
rasdial CONN_NAME connUser connPassword
goto l_end
:l_disconnect
rasdial CONN_NAME /disconnect
goto l_end
:l_unknown
@echo Unknown option %1
goto l_end
:l_end
将 CONN_NAME
替换为网络连接中显示的连接名称,以及 connUser
和 connPassword
替换为 ISP 的身份信息。同样,将文件保存在安全的位置(我使用的是 C:\etc\inet.bat),以便您的帐户无法读取或写入该文件。
还需要执行一个步骤才能使其自动执行:执行 gpedit.msc,转到计算机配置/Windows 设置/脚本,然后双击启动。在启动属性中,单击添加...,并将脚本名称设置为 C:\etc\inet.bat,并将脚本参数设置为 connect。(如果您还需要在关机时断开连接,请双击关机,并在脚本参数中设置 disconnect 而不是 connect)。
在添加自动拨号脚本 inet.bat 后,只需对添加上面的脚本 ipsend.vbs 重复相同的步骤(在编辑它之后)。据我所知,启动脚本按顺序执行,因此首先会拨号连接,然后会发送电子邮件。(为了方便起见,可以将 .bat 和 .vbs 文件从单个 windows-startup.bat 文件调用,该文件执行拨号然后执行电子邮件任务)。
历史
- 2007 年 10 月 6 日:初始发布