网络工程师的VBScript学习笔记-3

来源:互联网 发布:2016中国电梯行业数据 编辑:程序博客网 时间:2024/05/16 10:05

好了,命令行打开了,开始输入了。第二块积木是SendKeys。

这个命令类似按顺序输入字符。以下是常用的输入方式,例如我要telnet 10.0.0.1然后回车。

SendKeys "telnet 10.0.0.1"

SendKeys "{ENTER}"

还可以

SendKeys "telnet 10.0.0.1"&"{ENTER}"


然而问题是telnet后面的IP是变化的,我会需要从10.12.0.1到10.12.0.30都需要登录,肯定得用变量。简单看下也知道,IP的前24位是不变的,只有后8位变化。这个变化基本是连续的。那么可以应用经典的循环操作,在VBS里如下实现:

Dim i

For i = 1 to 30

执行你需要的代码

Next

这样就能循环30次执行你的代码,每次i会自己+1作为计数。

而使用这样的结构,需要保证在Next之前是一个闭环操作。我要做的就是telnet 从10.0.0.i,然后分别输入账号密码,接着是设备执行的命令,最后退出telnet返回cmd。接下来开始下一个循环。类似如下:

Dim i

For i = 1 to 30

SendKeys "telnet 10.0.0."&i&"{ENTER}"

WScript.sleep 500

SendKeys "login-account"&"{ENTER}"

SendKeys "password"&"{ENTER}"

WScript.sleep 500

SendKeys "commands"&"{ENTER}"

SendKeys "quit"&"{ENTER}"

WScript.sleep 5000

SendKeys "{ENTER}"

Next

这里的WScript.sleep正是我需要的等待时间,单位是毫秒,WScript.sleep 500就是等待500毫秒。这个时间需要根据网络情况调整,稍微大一点无所谓。


但是这事不算完,因为ip不一定连续,而且也不都是1 to 30。那执行就有问题了。解决办法应该有几个,我暂时还只能控制For i = 1 to 30这个。改为For i = m to n,m和n都是变量,执行前由我从键盘输入即可。一次处理一栋楼的效率也是可以的。从键盘输入的命令如下:

Dim m

 m = InputBox ("请输入m的值","m的值")

Dim n

n = InputBox ("请输入n的值","n的值")

InputBox的参数自己可以查查资料改着玩。

0 0
原创粉丝点击