Запись stdout для файлов журнала с использованием модуля подпроцесса python - PullRequest
0 голосов
/ 27 апреля 2020

Мне нужно запустить утилиту (sdptool), которая проверяет версии прошивки на> 500 серверах. То, что я вставил ниже, работает, но стандартный вывод должен быть записан в файл, по одному на IP-адрес. (ips.txt содержит один IP-адрес на строку.) Как записать стандартный вывод в файлы? Даже один лог-файл будет работать. Спасибо.

import subprocess

with open("ips.txt") as ip_list:
    ips = ip_list.readlines()

for ip in ips:
    output = subprocess.Popen(["/opt/bin/sdptool", ip, "check"])

Если я использую subprocess.run , кажется, что он запускает команду оболочки последовательно, а не параллельно (но я могу управлять stdout таким образом), и я, вероятно, неверно, что выполнение является последовательным.

    output = subprocess.run(["/home/mherzog/sdptool/radfwup", ip, "check"],stdout=subprocess.PIPE)
    print(output)

Как минимум, sdptool печатает одну строку (на сервер) для времени и даты, одну строку, содержащую имя модели сервера, одну строку для версии B IOS и одна строка, сообщающая нам, можно ли обновить прошивку до последней версии.

...