subprocess.popen(замена параметра из списка и размещение его в команде)

Это моя первая неделя с питоном, поэтому я хотел бы заранее извиниться, если мой вопрос звучит глупо.

В основном я написал этот код:

__author__ = 'houssam'

import subprocess
from subprocess import Popen, PIPE

check = subprocess.Popen(["winexe", "--system", "-U","mydomain\\myusername%mypassword", "//computername", "cmd /C c:\\Windows\\System32\\inetsrv\\appcmd list site"],stderr=subprocess.PIPE, stdout=subprocess.PIPE)
(stdout,stderr) = check.communicate()

if check.returncode == 0:
print 'IIS is installed on this system in the location below:'
print stdout


elif check.returncode == 1:
print 'IIS is NOT installed on this system ' and stderr

Таким образом, в основном я могу запросить IIS конкретного компьютера "// имя_компьютера", и это работает.

Однако у меня есть 20 компьютеров. Я хочу создать список list = [computer1,computer2,computer3], а затем иметь функцию, которая выполняет: для каждого c в списке заменяет имя компьютера на единственный уникальный параметр "// имя_компьютера" внутри subprocess.check_output, который вызывает команду winexe, поэтому мне не нужно писать команду для всех компьютеров, которые у меня есть.

Я ценю вашу помощь и предложения.

Спасибо,

Хусам

1 ответ

Решение

Я действительно нашел ответ:

Я создал список серверов

server = [//computer1", "//computer2"]

Затем я добавил оператор for и поместил список внутри popen следующим образом:

   for server in servers:
   check= subprocess.Popen(["winexe", "--system", "-    
   U","mydomain\\myusername%mypassword",     
   server, "cmd /C c:\\Windows\\System32\\inetsrv\\appcmd list     
   site"],stderr=subprocess.PIPE,   
   stdout=subprocess.PIPE)
   (stdout,stderr) = check.communicate()

       if check.returncode == 0:
         print 'IIS is installed on this system in the location below:'
         print stdout


       elif check.returncode == 1:
         print 'IIS is NOT installed on this system ' and stderr

Затем я помещаю это в функцию следующим образом:

 def iis_check(servers):
    for server in servers:

         check= subprocess.Popen(["winexe", "--system", "-  
         U","mydomain\\myusername%mypassword",     
         server, "cmd /C c:\\Windows\\System32\\inetsrv\\appcmd list    
         site"],stderr=subprocess.PIPE,   

         stdout=subprocess.PIPE)
        (stdout,stderr) = check.communicate()

         if check.returncode == 0:
            print 'IIS is installed on this system in the location below:'
            print stdout


         elif check.returncode == 1:
            print 'IIS is NOT installed on this system ' and stderr
Другие вопросы по тегам