2013-04-25 112 views
-2

任何人都可以告訴我,爲了給python腳本預留一個空格,我們必須給出什麼提示。我需要執行一個命令,只有在它看到期望提示。在做手動我得到的提示是一個空格,並且必須通過腳本也期望相同的提示。pexpect提示輸入python中的空格

進口Pexpect的 進口pxssh 進口時間 進口操作系統,重,SYS

高清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

歡迎使用stackoverflow。我認爲你們的問題對我們大多數人來說有點模糊。看起來你正在使用'pexpect'包,但是大多數看這個問題的人可能從來沒有使用它。如果你可以編輯你的問題給我們一個你已經嘗試過的例子,並且更清楚地解釋你期望發生的事情,它可能會有所幫助。 – Mike 2013-04-25 12:45:44

+0

感謝邁克..我會更新我的問題 – abhi 2013-04-25 13:01:49

+1

@abhi我現在也將更新您的問題與答案定義什麼麥克的答案下面提供。您將在未來幫助其他人,並以這種方式得到答案。 – TryTryAgain 2013-04-25 16:52:23

回答

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?這會殺死程序嗎?

+0

感謝邁克的回覆,我試過('\ n'),但沒有工作。實際上執行iperf -s命令時,提示符將如下所述,-------------- ---------------------------------------------- 服務器正在偵聽TCP端口5001 TCP窗口大小:64.0 KByte(默認) ------------------------------------ ------------------------之後,光標在空白處閃爍,所以我必須期待從這裏開始。 – abhi 2013-04-26 05:04:36