- 论坛徽章:
- 0
|
需要从linux telnet到windows,然后自动执行一些命令,用pexpect模块,但是总是捕捉不到telnet后的关键字“login”,telnetlib也试过,login和password两个关键字都捕捉到并顺利输入了,但抓不到命令行的prompt
以下代码从ubuntu telnet到solaris测试没有问题,但telnet到windows上就是不行,匹配的关键字能想得到的都试过了,总觉得应该不是匹配的问题,请各位帮忙看看,谢谢
- import pexpect , sys
- class telnetClient():
- # -------------------
- def __init__( self , host , user , port , passwd , tmout=20 ):
- self.host = host
- self.user = user
- self.port = port
- self.passwd = passwd
- self.tmout = tmout
- def connect( self ):
- try:
- self.telnet = pexpect.spawn("telnet %s %s" %( self.host , self.port ),timeout=self.tmout)
- self.telnet.expect("login:")
- except pexpect.TIMEOUT:
- print "connect to %s timeout (timeout = %ds)."%(self.host,self.tmout)
- sys.exit(1)
- try:
- self.telnet.sendline(self.user)
- self.telnet.expect("assword:" , timeout=self.tmout)
- except pexpect.TIMEOUT:
- print "timeout."
- sys.exit(1)
- try:
- self.telnet.sendline( self.passwd )
- u = self.telnet.expect([r"\$",r"\#",r"\>","login:$"],timeout=self.tmout)
- except pexpect.TIMEOUT:
- print "wait for user command prompt timeout."
- sys.exit(1)
- if u==3:
- print "BAD USERNAME / BAD PASSWORD"
- sys.exit(1)
- else:
- print "connect to %s successful!" % self.host
复制代码 |
|