pexpect提示python中的空格

时间:2013-04-25 10:54:44

标签: python pexpect

任何人都可以告诉我,我们必须提供什么提示,以期为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()

1 个答案:

答案 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?这会扼杀这个程序吗?