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

Need assistance with pexpect module - script doesn't find the match

我正在编写一小段代码以远程登录到交换机并提供用户名和密码。我使用 pexpect spawn class 来实现这一点。

我创建了一个 prompt_list,寻找 'login' 和 'password',然后输入用户名和密码。

我看到的问题是预期匹配 'login' 但不是密码。在 运行ning 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:

您在 try/except 中的 child.sendline('\n') 引起了问题:

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