任何人都可以告诉我,我们必须提供什么提示,以期为python脚本留出空白。我需要执行一个命令,只有在看到期望提示后才会执行。我手动完成提示符是一个空格,并且还必须通过脚本获得相同的提示。
导入pexpect 导入pxssh 进口时间 import os,re,sys
def ssh(ipaddr,密码): 尝试:
ss = pexpect.spawn(ipaddr)
print ipaddr
ss.logfile = open("/tmp/mynewlog", "a")
print "SSH connecting"
print
except:
print "connection refused"
print
#sys.exit()
try:
print password
ss.expect (':')
ss.sendline (password +"\n")
print "connected"
time.sleep(30)
ss.expect (">")
print "connection established"
print
except:
print "Permission denied, please try again."
print
sys.exit()
try:
ss.sendline ('taskkill /F /IM iperf.exe\n')
time.sleep(30)
ss.expect ('>')
ss.sendline ('cd /D D:\iperf-2.0.5-2-win32\n')
ss.expect ('>')
ss.sendline ('iperf -s\n')#########This command i need to execute and i'm expecting a blank space as prompt
ss.sendline (pexpect.EOF)
print "END"
ssh()
除了:
print“执行命令失败”
打印
sys.exit()
答案 0 :(得分:1)
修改强>
ss.expect
将任何字符串作为regular expression,并使用它来搜索程序的输出。在您的情况下,如果您想在所有破折号之前匹配该行,您可以执行
ss.expect(r'TCP window size: .*yte \(default\)')
更广泛地说,我不确定您要通过此方式实现目标,但查看this page可能会有所帮助。
<强>旧强>
当你说你想要一个空格作为提示时,我不确定你的意思。
1)它真的是一个空间吗?如果是这样ss.expect(' ')
似乎应该有效。
2)有没有结束?如果是这样ss.expect('\n')
似乎应该有效。
3)iperf
真的会给你提示吗?它真的在等待输入吗?而你发送一个EOF?这会扼杀这个程序吗?