У меня есть список IP-адресов сервера, я должен проверить, онлайн ли каждый и какой длины задержка.
Я не нашел прямых способов реализовать это, и, кажется, существует несколько проблем в вычислении задержки точно.
Какие-либо идеи?
Если вы уже знакомы с синтаксическим анализом строк, вы можете использовать модуль подпроцесса, чтобы преобразовать данные, которые вы ищете, в строку, например:
>>> import subprocess
>>> p = subprocess.Popen(["ping.exe","www.google.com"], stdout = subprocess.PIPE)
>>> print p.communicate()[0]
Pinging www.l.google.com [209.85.225.99] with 32 bytes of data:
Reply from 209.85.225.99: bytes=32 time=59ms TTL=52
Reply from 209.85.225.99: bytes=32 time=64ms TTL=52
Reply from 209.85.225.99: bytes=32 time=104ms TTL=52
Reply from 209.85.225.99: bytes=32 time=64ms TTL=52
Ping statistics for 209.85.225.99:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 59ms, Maximum = 104ms, Average = 72ms
Если вы хотите избежать реализации всех деталей сетевой связи, вы, вероятно, можете попытаться создать что-то поверх fping :
fping - подобная программа, которая использует эхо-запрос протокола управляющих сообщений Интернета (ICMP), чтобы определить, отвечает ли целевой хост. fping отличается от ping тем, что вы можете указать любое количество целей в командной строке или указать файл , содержащий списки целей для {{ 1}} пинг. Вместо отправки одной цели до тех пор, пока она не истечет или не ответит, fping отправит пакет проверки связи и перейдет к следующей цели циклически.