python pexpect输出_Python pexpect返回命令和命令输出

我想连接到运行CLISH的服务器,在给出密码提示时提供密码(works),然后发出“shell”命令将我转到bash shell(works),然后测试文件是否存在,如果文件丢失则打印“true”,如果文件存在则打印“空字符串”(works)。

不起作用的是,我正在用“pexpect.before”读回我的脚本。我已经让pexpect期望得到基本的提示,然后给我“before”,我的理解是:“在匹配提示之前,您在屏幕上看到了什么?”我不仅得到了预期的“true”或“”(空字符串),还得到了我发出的用于测试文件存在性的命令。

例如,如果我直接SSH到机器,我将执行以下操作:

密码:

我的脚本返回的是命令和响应(问题和答案):

[ ! -f '/etc/logrotate.d/nginx' ] && echo 'true'

true

我只想得到答案,要么是“真的”,要么是。我得到了回应,但我也得到了发出的命令。

你能看出我做错了什么吗?请帮忙!我想继续使用pexpect,因为我对SSH会话有更复杂的“期望”。

这是我的代码:def connection(cmd):

msg_newkey = 'Are you sure you want to continue connecting'

p=pexpect.spawn('ssh '+user+'@'+host)

msg = '''Super long welcome message containing your canned warning message, etc.

myuser@'''+myhost+''''s password:'''

i=p.expect([msg_newkey,'password:',pexpect.EOF])

if i==0:

print "Accepting key."

p.sendline('yes')

i=p.expect([msg_newkey,'password:',pexpect.EOF])

if i==1:

print "Supplying password"

p.sendline(passwd)

elif i==2:

if "No route to host" in p.before:

return p.before

else:

pass # Add no functionality, just saying "move on"

i=p.expect(['MYCLISHPROMPT>',pexpect.EOF])

if i==0:

p.sendline('shell')

i=p.expect(['.*@.*\$',pexpect.EOF])

if i==0:

p.sendline(cmd)

p.expect(['myuser@myhost:',pexpect.EOF])

return p.before

def look_for_file(step, filename, mytest):

cmd = "[ ! -f '"+filename+"' ] && echo '"+mytest+"'"

results = connection(cmd)

print "***"+str(result)+"***"

assert (results == '' or results == 0), "Step failed! Error: "+results

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值