我有一个VBScript中启动一个命令提示符,通过Telnet方式登录到设备和脚本TFTP的配置到服务器。 它的工作原理,当我登录并手动运行它。 我想将它与Windows自动执行任务计划程序 。
会,在这里能够理解的任何援助是的VBScript脚本:
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd"
WScript.Sleep 100
WshShell.AppActivate "C:\Windows\system32\cmd.exe"
WScript.Sleep 300
WshShell.SendKeys "telnet 10.20.70.254{ENTER}"
WScript.Sleep 300
WshShell.SendKeys "netscreen"
WScript.Sleep 300
WshShell.SendKeys "{ENTER}"
WScript.Sleep 300
WshShell.SendKeys "netscreen"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 300
WScript.Sleep 300
WshShell.SendKeys "save conf to tftp 10.10.40.139 test.cfg{ENTER}"
WScript.Sleep 200
WshShell.SendKeys "exit{ENTER}" 'close telnet session'
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd"
WScript.Sleep 100
WshShell.AppActivate "C:\Windows\system32\cmd.exe"
WScript.Sleep 300
WshShell.SendKeys "telnet 10.20.70.254{ENTER}"
WScript.Sleep 300
WshShell.SendKeys "netscreen"
WScript.Sleep 300
WshShell.SendKeys "{ENTER}"
WScript.Sleep 300
WshShell.SendKeys "netscreen"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 300
WScript.Sleep 300
WshShell.SendKeys "save conf to tftp 10.10.40.139 palsg140.cfg{ENTER}" 'repeat as needed
WScript.Sleep 200
WshShell.SendKeys "exit{ENTER}" 'close telnet session'
WshShell.SendKeys "{ENTER}" 'get command prompt back
WScript.Sleep 200
WshShell.SendKeys "exit{ENTER}" 'close cmd.exe
WshShell.SendKeys "{ENTER}" 'get command prompt back
WScript.Sleep 200
WshShell.SendKeys "exit{ENTER}" 'close cmd.exe
添加运行与您的凭据脚本的计划任务。 提醒自己,你需要在每次您更改密码的时间来更新任务的凭据。 它是通过电子邮件或东西会在每次运行,这样,如果正在执行它,你可以告诉时候有剧本“手机之家”是个好主意。
这也可能是成立一个单独的服务ID为这些类型的活动是个好主意。 您可能不需要对服务ID频繁更改密码。
您可以添加一个计划任务,并为其输入没有凭据或密码。 这将导致其本地系统(通常是任务计划服务使用的上下文中)下运行。
请注意,这是一个后门漏洞的情况:任何人都可以编辑您的脚本文件可能滥用它做的是运行任务的机器上不良的东西。 放在脚本文件适当的权限,以防止这一点。 在另一方面 - 作为本地系统运行一个任务不能破坏的破坏在网络上。
我建议你凝结脚本文件一点点:
Set WshShell = WScript.CreateObject("WScript.Shell")
Run "cmd.exe"
SendKeys "telnet 10.20.70.254{ENTER}"
SendKeys "netscreen"
SendKeys "{ENTER}"
SendKeys "netscreen"
SendKeys "{ENTER}"
SendKeys "save conf to tftp 10.10.40.139 test.cfg{ENTER}"
SendKeys "exit{ENTER}" 'close telnet session'
Run "cmd.exe"
SendKeys "telnet 10.20.70.254{ENTER}"
SendKeys "netscreen"
SendKeys "{ENTER}"
SendKeys "netscreen"
SendKeys "{ENTER}"
SendKeys "save conf to tftp 10.10.40.139 palsg140.cfg{ENTER}" 'repeat as needed
SendKeys "exit{ENTER}" 'close telnet session'
SendKeys "{ENTER}" 'get command prompt back
SendKeys "exit{ENTER}" 'close cmd.exe
SendKeys "{ENTER}" 'get command prompt back
SendKeys "exit{ENTER}" 'close cmd.exe
Sub SendKeys(s)
WshShell.SendKeys s
WScript.Sleep 300
End Sub
Sub Run(command)
WshShell.Run command
WScript.Sleep 100
WshShell.AppActivate command
WScript.Sleep 300
End Sub
我如果桌面被锁定或没有用户登录可以肯定的SendKeys将无法正常工作。
我如果您还没有登录漂亮的SendKeys是行不通的。这是我的经验不可靠的反正。 你可能会更好使用DOS批处理文件。
getftpconf.bat:
telnet 10.10.40.139
netscreen
netscreen
save conf to tftp 10.10.40.139 palsg140.cf
exit
类似的东西。
如果在你需要记录的命令提示符输出,你可以在命令行快捷年底建成一个“>> output.txt的”。
然后,您可以调用它发送通过ftp是output.txt的永远你需要在那里另一个批处理文件。
您可以轻松地安装此批处理文件到Windows的计划任务运行。
只是使包含此批处理文件:
cscript.exe myscript.vbs
它保存为类似myscript.bat。
使用计划任务安排.bat文件。 创建计划任务后,你可能要检查它的属性,以确保它具有适当的用户权限。
还有一些选项可以cscript的使用,因此不显示标志等
批处理文件不能在Windows使用Telnet工作(在UNIX工作正常 - 再次路要走微软)。 如这里已经提到的,的SendKeys不VBA时没有登录工作。
对不起,我没有给你了“这样没有问题”的解决方案....我卡在了同样的问题