因为网络工程的实施过程中,需要对大量的设备进行配置,以及工程结束时对大量设备进行配置备份。因此想做一个批处理工具自动telnet。
目前,结合百度搜索的结果,已经完成了以下功能:、
1、通过bat文件自动生成vbs文件
2、运行vbs文件以后,自动telnet设备,并输入准备好的命令。可以配置,也可以备份配置。
代码如下:
1、bat文件的代码:- @del .\temp.vbs
- @echo on error resume next >>.\temp.vbs
- @echo dim WshShell>>.\temp.vbs
- @echo Set WshShell = WScript.CreateObject("WScript.Shell")>>.\temp.vbs
- @echo WshShell.run"cmd">>.\temp.vbs
- @echo WshShell.AppActivate".\windows\system32\cmd.exe">>.\temp.vbs
- @echo WScript.Sleep 200>>.\temp.vbs
- @echo WshShell.SendKeys"telnet 192.168.1.2">>.\temp.vbs
- @echo WshShell.SendKeys"{ENTER}">>.\temp.vbs
- @echo WScript.Sleep 100>>.\temp.vbs
- @echo WshShell.AppActivate"telnet.exe ">>.\temp.vbs
- @echo WScript.Sleep 1000>>.\temp.vbs
- for /f "tokens=1 delims=" %%a in ('type .\input.txt') do (@echo WshShell.SendKeys"%%a" >>.\temp.vbs)&(@echo WshShell.SendKeys"{ENTER}">>.\temp.vbs)&(@echo WScript.Sleep 1000>>.\temp.vbs)
- @call .\temp.vbs>>.\temp1.txt
复制代码 2、生成的vbs的代码:- on error resume next
- dim WshShell
- Set WshShell = WScript.CreateObject("WScript.Shell")
- WshShell.run"cmd"
- WshShell.AppActivate".\windows\system32\cmd.exe"
- WScript.Sleep 200
- WshShell.SendKeys"telnet 192.168.1.2"
- WshShell.SendKeys"{ENTER}"
- WScript.Sleep 100
- WshShell.AppActivate"telnet.exe "
- WScript.Sleep 1000
- WshShell.SendKeys"cisco"
- WshShell.SendKeys"{ENTER}"
- WScript.Sleep 1000
- WshShell.SendKeys"en"
- WshShell.SendKeys"{ENTER}"
- WScript.Sleep 1000
- WshShell.SendKeys"cisco"
- WshShell.SendKeys"{ENTER}"
- WScript.Sleep 1000
- WshShell.SendKeys"show ip int br"
- WshShell.SendKeys"{ENTER}"
- WScript.Sleep 1000
- WshShell.SendKeys"conf t"
- WshShell.SendKeys"{ENTER}"
- WScript.Sleep 1000
- WshShell.SendKeys"exit"
- WshShell.SendKeys"{ENTER}"
- WScript.Sleep 1000
- WshShell.SendKeys"exit"
- WshShell.SendKeys"{ENTER}"
- WScript.Sleep 1000
复制代码 3、我测试用的txt文本- cisco
- en
- cisco
- show ip int br
- conf t
- exit
- exit
复制代码 在使用时,只需要将txt文本拖动到bat文件的图标上即可。
遗留问题:
1、生成的vbs代码中,一个命令输出完以后无法根据网络设备返回的命令结果进行下一步配置,而是通过sleep的等待时间来进行下一步配置。这样对于某些需要执行很久的命令就不兼容。最好能有类似WaitForString或者Experts 之类的方法,等待返回结果后再输入下一个命令。
2、现有的vbs代码,无法记录整个批处理的执行过程。只能在结束后,通过tftp把配置文件考下来比对。不方便,也不放心。
希望大家能够帮忙解决。
[ 本帖最后由 htnet11 于 2009-4-21 18:08 编辑 ] |