密码期望表达式没有得到匹配

时间:2013-04-24 21:03:41

标签: python unix pexpect

我开始使用Pexpect库,出于某种原因,我遇到了让表达式匹配的问题。

例如,在以下代码中

   import pexpect

   child=pexpect.spawn('su')
   i=child.expect_exact('Password:')
   print "value of i is %d" %i
   if i==1:
          p=input("Please enter root password : ")
          child.sendline(p)
          child.sendline('echo piggy')

问题 我永远不等于1

4 个答案:

答案 0 :(得分:2)

未从终端调用

su时拒绝运行:

$ echo blah | su
su: must be run from a terminal

答案 1 :(得分:0)

IMO,当pexpect就是答案时,你问的是错误的问题。

在这种情况下,您可以更有效地使用sudo。它可以配置为在特定用户调用时以root身份运行,而无需密码。

答案 2 :(得分:0)

根据文档,当您将字符串传递给expect_exact()时,它会在匹配时返回0,而不是1.

您是否尝试将i与0进行比较?

答案 3 :(得分:0)

首先你登录超级用户使用这个评论,pxssh是这个类扩展pexpect.spawn以专门设置SSH连接。这增加了登录,注销和期待shell提示的方法。

import pexpect
import pxssh

hostname ='172.16.0.120 -p 2222'
username = 'root'  # must you login in super user add this line
password = 'zilogic'
host = pxssh.pxssh()
host.login (hostname, username, password)
host.logfile = open(logfile, "w")
host.sendline ('whoami') 
print host.before

你将用于pxssh模块不需要child.expect_exact('密码:'),这个密码期望照顾pxssh模块看到这个链接Python: How can remote from my local pc to remoteA to remoteb to remote c using ParamikoHow to login the super user(root) in remote host system using pexpect?