扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
batch Telnet是远程批处理的工作。那么如何进行这个batch Telnet设置呢?下面我们来对这方面的有关内容进行一下分析。首先我们需要了解一下最初的方法。
两种办法可以实现bat转换为EXE
有两种办法可以实现bat转换为EXE,一种是利用工具,如DOS下的bat2exe工具;另一种方法是在VB中使用Shell函数,其形式如下(结束后DOS窗口会自行关闭):
Shell "command.com /c copy c:\\1.txt a:\\",vbNormalFocus
如何在批处理中运行Telnet自动任务?
一般来说ftp做batch处理事务时非常常见的事情。那么如果Batch Telnet,让我们的管理工作更加的轻松呢?
一般来说两种方法:
1、VBS法(Windows Script Host)
2、自动终端法(一些可以配置自动Telnet的终端)
在这里我们讨论第一种方法:VBS法。由于Windows Script Host是系统自带的,我们不需要安装地方放软件就可以搞定。所以它一般是解决问题的首选。
首先,我们建立一个名字叫做tel.vbs的脚本,这里用Telnet 到cisco路由器上作为一个例子,相关内容大家可以修改。
’建立Shell对象
set sh=WScript.CreateObject("WScript.Shell")
WScript.Sleep 1000
’向Telnet发送我们平时录入的命令
sh.SendKeys "open 192.168.1.1"
WScript.Sleep 1000
sh.SendKeys "{ENTER}"
WScript.Sleep 1000
sh.SendKeys "password{ENTER}"
WScript.Sleep 1000
sh.SendKeys "en{ENTER}"
WScript.Sleep 1000
sh.SendKeys "passord{ENTER}"
WScript.Sleep 1000
’运行cisco的show run命令
sh.SendKeys "show run{ENTER}"
然后,建立一个batch_tel.bat的批处理文件:
rem 启动Telnet
start Telnet.exe
rem batch Telnet
cscript //nologo tel.vbs
最后,我们只需要运行batch_tel.bat就可以轻松搞定Telnet的工作了。
对于SendKeys这个命令可以send什么,我们可以看下面的列表:
BACKSPACE {BACKSPACE}, {BS}, or {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL ;or DELETE {DELETE} or {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER {ENTER}or ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS or INSERT {INSERT} or {INS}
LEFT ARROW {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
RIGHT ARROW {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
UP ARROW {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}
SHIFT +
CTRL ^
ALT %
Shell一个应用程序并等待该程序执行完毕后继续运行
Shell &Wait 的程序怎么写? 希望某一 VB 程序利用 Shell 执行某一个外部程序(假设是 notepad.exe)之后, 就一直等到此一程序结束执行时, 才回到 VB 程序继续执行, 该怎么办到呢? 当我们调用 Shell 时, 会传回一个数值, 此一数值称为 Process Id, 利用此 一 Process Id, 我们可以调用 OpenProcess API 取得 Process Handle, 然后 再利用 Process Handle 调用 WaitForSingleObject, 即可等待被 Shell 执行的 程序执行完毕, 才继续向下执行。细节如下:
1. API 的声明:
Const SYNCHRONIZE = &H100000
Const INFINITE = &HFFFFFFFF
Private Declare Function OpenProcess Lib "kernel32" (ByVal
dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId
As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As
Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal
hHandle As Long, ByVal dwMilliseconds As Long) As Long
注:如果以上的声明放在「一般模块」底下, 应将 Declare 之前的 Private 保 留字去掉, 并且在 Const 之前加上 Public 保留字。
2. 程序范例:(以执行 Notepad 程序为例)
Dim pId As Long, pHnd As Long ’分别声明 Process Id 及 Process Handle 变 数
pId = Shell("Notepad", vbNormalFocus) ’Shell 传回
Process Id pHnd = OpenProcess(SYNCHRONIZE, 0, pId) ’ 取得 Process Handle
If pHnd <> 0 Then Call WaitForSingleObject(pHnd, INFINITE) ’ 无限等待,直到程序结束
Call CloseHandle(pHnd)
End If
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者