Я работаю в Mac OS и могу сортировать текстовый файл, состоящий из нескольких IP-адресов, не в последовательном порядке.Я могу отсортировать адреса по порядку и распечатать их.
Я хотел бы также взять этот новый отсортированный список и пинговать адреса в том же порядке.
После запуска сценария адреса распечатываются по порядку, однако сканирование начинается с последнего адреса в текстовом файле.
Код:
#!/usr/bin/env python3
import subprocess
with open("path to text file") as f:
lines = f.readlines()
for target in sorted(lines, key=lambda target:
(int(target.split(".")[1]))):
print(target)
print('-' * 40)
print('Attempting to ping IP Addresses in order... \n')
for line in target:
try:
ping = subprocess.Popen(
["ping", "-c", "1", "-l", "1", "-s", "1", "-W", "1", line],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
finally:
reach, error = ping.communicate()
print(reach)
Например,, если в текстовый файл включены следующие адреса:
10.4.1.1,
10.6.1.1,
10.8.1.1,
10.20.1.1
Я ожидаю, что результаты проверки будутраспечатайте эти адреса в указанном порядке.
Ниже показано, что выводит скрипт:
10.4.1.1
10.6.1.1
10.8.1.1
10.20.1.1
Попытка пинговать IP-адреса по порядку ...
PING 1 (0.0.0.1): 1 байт данных \ n \ n --- 1 статистика пинга--- \ n1 переданных пакетов, 0 принятых пакетов, 100.0% потерь пакетов \ n '
b'PING 0 (0.0.0.0): 1 байт данных \ n \ n --- 0 пинговой статистики --- \ n1Переданные пакеты, 0 принятых пакетов, 100.0% потери пакетов \ n '
b' 'b'PING 2 (0.0.0.2): 1 байт данных \ n \ n --- 2 пинг-статистики --- \ n1 переданных пакетов, 0 полученных пакетов, потеря 100.0% пакетов \ n '
b'PING 0 (0.0.0.0): 1 байт данных \ n \ n --- 0 пинговой статистики --- \ n1 переданных пакетов, 0 принятых пакетов, 100.0% потерь пакетов \ n '
b' 'b'PING 1(0.0.0.1): 1 байт данных \ n \ n --- 1 статистика пинга --- \ n1 переданных пакетов, 0 полученных пакетов, потеря пакетов 100.0% \ n '
b' 'b'PING 1 (0.0.0.1): 1 байт данных \ n \ n --- 1 статистика пинга --- \ n1 переданных пакетов, 0 полученных пакетов, потеря пакетов 100,0% \ n '
b' '
В идеале,Я хотел бы, чтобы адреса текстовых файлов распечатывались по мере их пингования.Я не уверен, что эта ошибка связана с открытием файла в начале и последующим использованием его для проверки связи или с тем, что происходит.