原文出处:
http://blog.sina.com.cn/s/blog_413d03850100el33.html
今天一个同事按如下文章测试成功。

一般来说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 %

===============================================================================

我自己做的:

tel.vbs 内容

set sh=WScript.CreateObject("WScript.Shell")
WScript.Sleep 1000
sh.SendKeys "open 192.168.0.1{ENTER}"
WScript.Sleep 1000
sh.SendKeys "username{ENTER}"
WScript.Sleep 1000
sh.SendKeys "password{ENTER}"
WScript.Sleep 1000
sh.SendKeys "clear session{ENTER}"
WScript.Sleep 5000
sh.SendKeys "exit{ENTER}"
WScript.Sleep 1000
sh.SendKeys "{ENTER}"
WScript.Sleep 1000
sh.SendKeys "quit{ENTER}"


batch_tel.bat 内容:

rem 启动telnet
start telnet.exe
rem batch telnet
cscript //nologo tel.vbs
 

 

总结:密码如果有特殊符号用到shift的要用SHIFT + ,没测试过。

 

下面没测试成功。不研究了。

一。Windows平台:
复制一下代码到记事本中并另保存为autoTelnet.bat,之后双击运行就实现自动登录到telnet服务器了,服务器IP自己修改
@echo off
echo set sh=WScript.CreateObject("WScript.Shell") >telnet_tmp.vbs
echo WScript.Sleep 300 >>telnet_tmp.vbs
echo sh.SendKeys "open 192.168.1.200" >>telnet_tmp.vbs
echo WScript.Sleep 300 >>telnet_tmp.vbs
echo sh.SendKeys "{ENTER}" >>telnet_tmp.vbs
echo WScript.Sleep 300 >>telnet_tmp.vbs
echo sh.SendKeys "engineer{ENTER}" >>telnet_tmp.vbs
echo WScript.Sleep 300 >>telnet_tmp.vbs
echo sh.SendKeys "ls {ENTER}">>telnet_tmp.vbs
start telnet
cscript //nologo telnet_tmp.vbs
del telnet_tmp.vbs

附录:
 

对于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 %

二。Linux平台

保证你的系统上存在expect这个可执行程序,保存以下代码到文件autoTelnet,并给与执行权限。详细操作察看命令expect

#!/usr/bin/expect --
set SERVER "192.168.1"
set USER "myusername"
set PASSWD "mypass"
if { $argc } {
spawn telnet $SERVER.$argv
} else {
spawn telnet $SERVER.200
}
expect "Password:"
send "$PASSWD\n"
expect "#"
send "ls\n"
interact