VBScript获取外网IP并自动邮件通知

1 下载量 158 浏览量 更新于2024-09-01 收藏 63KB PDF 举报
"使用vbs获取外网IP并发送到邮箱的脚本示例" 本文将详细介绍如何使用VBScript(Visual Basic Script)来获取外网IP地址,并将其发送到指定的电子邮箱。VBScript是一种轻量级的脚本语言,常用于Windows环境中的自动化任务。 首先,我们看到代码注释部分: ```vbscript '****************************************** '*程序名称:GetIP.vbs '*程序说明:获得本地外网地址并发送到指定邮箱 '*编码:lyserver '****************************************** ``` 这表明我们的脚本名为"GetIP.vbs",它的主要功能是获取本地的外网IP地址并发送邮件。 接着是`Option Explicit`语句,这强制在编写代码时显式声明所有变量,有助于避免因未声明变量而引发的错误。 `Call Main`调用主函数`Main`作为程序的执行入口。下面定义了该函数: ```vbscript Sub Main() '... End Sub ``` 在`Main`函数中,我们创建了两个对象:`objWsh`和`objEnv`。`objWsh`是`WScript.Shell`对象,用于执行系统命令;`objEnv`则是用来访问系统环境变量。 `Dim strNewIP, strOldIP, dtStartTime, nInstance`声明了四个变量,`strNewIP`存储新的外网IP,`strOldIP`存储旧的IP,`dtStartTime`记录检查IP的起始时间,`nInstance`计数脚本的运行实例。 `dtStartTime = DateAdd("n", -30, Now)`设置起始时间为30分钟前,这样可以确保在检查IP时有足够的时间间隔。 `nInstance = Val(objEnv("GetIpToEmail")) + 1`和`objEnv("GetIpToEmail") = nInstance`用于防止脚本的多个实例同时运行。如果`GetIpToEmail`环境变量已存在,表示已有脚本在运行,此时新的实例会立即退出。 接下来的`If nInstance > 1 Then Exit Sub`条件判断确保只有一个脚本实例在运行。 在`Do`循环中,脚本会定期检查外网IP。`If Err.Number <> 0 Then Exit Do`确保在出现错误时退出循环。`If DateDiff("n", dtStartTime, Now) >= 30 Then`则检查是否已经过去了至少30分钟,达到检查IP的频率。 `strNewIP = GetWanIP`调用了另一个函数`GetWanIP`,这个函数的目的是获取外网IP地址。由于这部分代码没有给出,通常这个函数会通过HTTP请求访问一个提供IP查询服务的网站(如http://checkip.dyndns.org/),然后从返回的HTML内容中解析出IP地址。 如果`strNewIP`与`strOldIP`不同,说明IP发生了变化,这时可以触发邮件发送过程。这部分代码没有提供,但通常会涉及创建一个SMTP邮件对象,设置发件人、收件人、主题和正文,然后通过SMTP服务器发送邮件。 总结来说,这个VBScript脚本用于定期检查外网IP,当IP发生变化时,通过邮件通知用户。这在监控动态公网IP或者需要了解网络连接状态的场景中非常有用。然而,实际使用时,你需要补充`GetWanIP`函数的实现以及邮件发送的相关代码。