无法打印存储远程m/c的popen结果的变量。

选择 | 换行 | 行号
  1. port2_result=os.popen('ipmitool raw 0x3a 0x11 0x2a 0x6f 0x00 8').read()

这是我在调用过程建立与远程机器的SSH连接后在脚本中编写的表达式。同样的事情适用于本地机器,但在ssh之后,它将变量指定为"[]"。ssh过程如下:

选择 | 换行 | 行号
  1. def SSH (user,host,PROMPT) :
  2.     os.system('rm -f /root/.ssh/known_hosts')
  3.     SSHd = 'ssh '+user+'@'+host
  4.     ssh_obj = pexpect.spawn(SSHd)
  5.     try :
  6.         ssh_obj.logfile=None;
  7.         ssh_obj.expect('\(yes\/no\)\?',timeout=50)
  8.         ssh_obj.sendline('yes')
  9.     except :
  10.         print "Unable to login to "+host
  11.         sys.exit(3)
  12.     try:
  13.         ssh_obj.expect(PROMPT,timeout=50)
  14.     except:
  15.         print "Unable to login to "+host
  16.         sys.exit(3)
  17.     try:
  18.         ssh_obj.sendline('XYZ')
  19.         ssh_obj.expect('found',timeout=10)
  20.         ssh_obj.sendline('PS1="RTM_SHOW>"')
  21.         ret=ssh_obj.expect(['RTM_SHOW>','#'],timeout=5)
  22.         if ret == 1:
  23.             ssh_obj.expect('RTM_SHOW>',timeout=5)
  24.     except:
  25.         print "Unable to change Prompt"
  26.         sys.exit(3)
  27.     ssh_obj.logfile=sys.stdout;
  28.     return ssh_obj
  29.  

这就是我执行命令的地方

选择 | 换行 | 行号
  1. if node != host :
  2.     print "YES",
  3.     try:
  4.         local=SSH("root",node,'#')
  5.         local.logfile=sys.stdout
  6.     except:
  7.         print "unable to do SSH."
  8.  
  9.  
  10.     try:
  11.               # reg=re.compile(r'^\s\d.+')
  12.                reg=re.compile('.*')
  13.                print "cmdsend"
  14.                local.sendline('ipmitool raw 0x3a 0x11 0x2a 0x6f 0x00 7')
  15.                ret=local.expect([reg,'RTM_SHOW>'],timeout=15)
  16.                if ret == 0:
  17.                    port1_result=local.match.group()
  18.                    print "my",port1_result
  19.                else:
  20.                         sys.exit(1)
  21.  
  22.  
  23.                port2_result = os.popen('ipmitool raw 0x3a 0x11 0x2a 0x6f 0x00 8').read()
  24.                parse_output(port1_result,port2_result)
  25.     except:
  26.                print "error EXECUTING ssh commands."
  27.  

它的打印"error EXECUTING ssh commands"。ret值为0。我不知道如何检查它在远程机器上实际打印的是什么!!请帮忙!

标签: python

添加新评论