0

我开始使用该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

4 回答 4

2

su不从终端调用时拒绝运行:

$回声废话| 苏
su:必须从终端运行
于 2013-04-24T21:15:32.827 回答
0

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

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

于 2013-04-24T22:28:20.903 回答
0

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

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

于 2013-04-24T22:36:29.793 回答
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('Password:'),此密码需要处理 pxssh 模块 请参阅此链接Python: How can remote from my local pc to remoteA to remoteb to remote c using Paramiko以及如何使用 pexpect 在远程主机系统中登录超级用户(root)?

于 2013-04-25T06:42:44.753 回答