我正在写一小段代码telnet到交换机并提供用户名和密码。我使用pexpect spawn类来实现这一目标。
我创建了一个prompt_list,其中包含了对“登录”的信息。和密码'然后输入用户名和密码。
我看到的问题是pexpect匹配' login'但不是密码。运行2-3次后,它匹配。我是否必须添加一些延迟或类似的东西才能使它第一次起作用。
有人可以帮助......
try:
child = pexpect.spawn(cmd, timeout= 100)
child.logfile = sys.stdout
child.sendline('\n')
conn = True
except:
print ' some exception occured'
if conn:
i = child.expect(prompt_list, timeout = 10)
if i == 0:
print 'inside login prompt'
child.sendline('admin')
i = child.expect(prompt_list, timeout = 10)
if i == 1:
print 'Inside password prompt'
child.sendline('password')
i = child.expect(prompt_list, timeout = 10)
我的prompt_list是:
prompt_list = ['login:','Password:']
当我运行此操作时,我收到以下错误
Switch login: inside login prompt
admin
我手动登录时获得的提示如下:
switch login: admin
Password:
答案 0 :(得分:1)
child.sendline('\n')
中的try/except
导致问题:
import pexpect
conn = False
import sys
try:
child = pexpect.spawn("telnet 127.0.0.1", timeout= 100)
child.logfile = sys.stdout
conn = True
except:
print ' some exception occured'
if conn:
child.expect(":", timeout = 10)
child.sendline('user')
child.expect(":", timeout = 10)
child.sendline('password')
child.expect(">")