2013-04-25 115 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