需要pexpect模块的帮助 - 脚本找不到匹配项

时间:2015-01-09 16:55:33

标签: python pexpect

我正在写一小段代码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:

1 个答案:

答案 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(">")