2016-11-23 71 views
0

我有一个脚本,它将检查多个主机的字符串模式(在这种情况下,它寻找“平台”。我想添加到该程序中以使其打印如果找不到那种搜索模式,有人可以帮助我指引正确的方向吗?例如,如果没有找到任何“平台”,那么它就不会打印出来,而是会打印出“我们找不到那个主机! !“Python 2.7:使用子进程和For循环输出结果

#在/ usr/bin中/ Python的

import commands, os, string 
import sys 
import fileinput 
import subprocess 
from subprocess import Popen, PIPE 
import shlex 


nodename = raw_input("Enter the hostname: ") 

hostname=['hostA', 'hostB', 'hostC'] 

for i in hostname: 
    print "Checking Host List..." 

    cmd = "ls -l" + hostname 
    args = shlex.split(cmd) 

    p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
    out, err = p.communicate() 

    if out.find("Platform") > -1: 
     print out 
     break 
+0

根据您发布的代码,我不太清楚您想要什么。你实际上并没有在你的'hostname'列表中使用主机名,为什么要迭代它呢? – Deneb

+0

我改变了实际的代码,因为真实的代码有敏感信息。但是我已经修改了上面的脚本来包含主机名变量 – user5578188

回答

0

类似的东西应该做的工作:

#!/usr/bin/python 
import commands, os, string 
import sys 
import fileinput 
import subprocess 
from subprocess import Popen, PIPE 
import shlex 


nodename = raw_input("Enter the hostname: ") 

hostname=['hostA', 'hostB', 'hostC'] 

for i in hostname: 
    print "Checking Host List..." 

    cmd = "ls -l "+i 
    args = shlex.split(cmd) 

    p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
    out, err = p.communicate() 
    print out 

    if out.find("Platform") > -1: 
     print out 
     break 

    if i == hostname[-1]: 
     print "We could not find that host!" 

hostname[-1]实际上是hostname列表的最后一个元素的快捷方式。因此,如果您到达hostname列表的最后一个元素,并且它不包含"Platform",则只会输入最后一个块。