-2

谁能告诉我,我们必须给出什么提示才能期望 python 脚本有一个空格。我需要执行一个命令,该命令只有在它看到期望提示后才会执行。手动执行时我得到了提示是一个空格,并且还必须通过脚本获得相同的提示。

导入 pexpect 导入 pxssh 导入时间 导入 o​​s,re,sys

def ssh(ipaddr,password): 试试:

    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()  

除了:打印“执行命令失败”
打印sys.exit()

4

1 回答 1

1

编辑:

ss.expect将任何字符串作为正则表达式,并使用它来搜索程序的输出。在您的情况下,如果您想在所有破折号之前匹配该行,您可以这样做

ss.expect(r'TCP window size: .*yte \(default\)')

更广泛地说,我不确定你想用这个来完成什么,但看看这个页面可能会有所帮助。


老的:

当您说您希望空格作为提示时,我不确定您的意思。

1)它真的是一个空间吗?如果ss.expect(' ')是这样,它应该可以工作。

2) 是否有行尾?如果ss.expect('\n')是这样,它应该可以工作。

3)iperf真的给你提示吗?真的是在等待输入吗?你要发送EOF?这会杀死程序吗?

于 2013-04-25T13:59:26.637 回答