首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助的pexpect模块-脚本找不到匹配

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

Stack Overflow用户
提问于 2015-01-09 16:55:33
回答 1查看 965关注 0票数 1

我正在编写一小部分代码来告诉网络进入交换机,并给出用户名和密码。我使用pexpect派生类来实现这一点。

我创建了一个prompt_list,用于查找“登录”和“密码”,然后输入用户名和密码。

我看到的问题是pexpect匹配‘登录’,而不是密码。在运行2-3次之后,它就匹配了。我是否需要添加一些延迟或类似的东西,以使它在第一次工作。

有人能帮忙吗..。

代码语言:javascript
复制
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是:

代码语言:javascript
复制
prompt_list = ['login:','Password:']

当我运行这个程序时,我会得到以下错误

代码语言:javascript
复制
Switch login: inside login prompt
admin

当我登录手动切换时得到的提示如下所示。

代码语言:javascript
复制
switch login: admin
Password:
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-09 17:45:30

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

代码语言:javascript
复制
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(">")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27865421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档