2016-11-23 72 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",則只會輸入最後一個塊。