分析某个网站上的CRT 动化脚本的实用性
以下是我在某网站摘抄的脚本,该脚本号称可以自动化运维,但是实践中我们发现了存在问题。
#$language = "VBScript"
#$interface = "1.0"
'本脚本示范:从一个文件里面自动读取设备IP地址,密码等,批量配置交换机
Sub Main
'打开保存设备管理地址以及密码的文件
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso,file1,line,str1,params
Set fso = CreateObject("Scripting.FileSystemObject")
Set file1 = fso.OpenTextFile("e:\config.txt",Forreading,False)
crt.Screen.Synchronous = True
DO While file1.AtEndOfStream <> True
'读出每行
line = file1.ReadLine
'分离每行的参数 IP地址 密码 En密码
params = Split (line)
'Telnet到这个设备上
crt.Session.Connect "/TELNET " & params(0)
'输入telnet账户
crt.Screen.WaitForString "Username:"
crt.Screen.Send params(1) & vbcr
'输入telnet账户密码
crt.Screen.WaitForString "Password:"
crt.Screen.Send params(2) & vbcr
'批量配置的命令
crt.Screen.WaitForString ">"
crt.Screen.Send "sys" & vbcr
crt.Screen.WaitForString "]"
crt.Screen.Send "save" & vbcr
crt.Screen.WaitForString "[Y/N]:"
crt.Screen.Send "y" & vbcr
crt.Screen.WaitForString ":"
crt.Screen.Send vbcr
crt.Screen.WaitForString "[Y/N]:"
crt.Screen.Send "y" & vbcr
crt.Sleep 1000
crt.Session.Disconnect
loop
crt.Screen.Synchronous = False
End Sub
其中以下这几段命令中原意为等待进入"<>“视图即进行下一步命令并输入"sys”,在实际操作过程中由于交换机命名过长或者>不易被vbs语言识别,经常导致脚本卡在该行无法进行后续的脚本,目前我还没有找到方法,发在博客看看大神聚集的地方有没有人能解决。:
crt.Screen.WaitForString ">"
crt.Screen.Send "sys" & vbcr
crt.Screen.WaitForString "]"
crt.Screen.Send "save" & vbcr
今天的学习就到这里吧,
原文地址:该脚本出处