Скрыть вывод команды ping
Есть фрагмент кода:
import os
address = 'google.com'
response = os.system('ping -c 1 ' + address)
Проблема в том, что бесполезная в моём случае информация, выводимая командой ping, не должна выводиться в консоль.
Ответы (4 шт):
Автор решения: Dmitry
→ Ссылка
через subprocess
import subprocess
response = subprocess.check_output(
['ping', '-c', '1', address],
stderr=subprocess.STDOUT,
universal_newlines=True
)
переменная response будет содержать инфу по ping
UPD
Буквально перевод
Выполняет команду с аргументами и возвращает вывод
Автор решения: vadim vaduxa
→ Ссылка
если требуется получать только код завершения ping, то можно перенаправить вывод в '> nul'
os.system(f'ping {address} > nul')
Автор решения: Namerek
→ Ссылка
pip install ping3
from ping3 import ping
if ping('avito.ru', timeout=1) is not None:
print('ok')
else:
print('fail')
if ping('yandex.ru', timeout=1) is not None:
print('ok')
else:
print('fail')
fail
ok
Есть нюанс. В Windows параметр количества запросов это -n.
посему, если следовать принципу универсальности (во загнул ?)
IMHO лучше всего использовать специальный инструмент. ?
Автор решения: R1senDev
→ Ссылка
Конкретно у меня (на Linux) помогло перенаправление потока вывода:
import os
address = 'google.com'
response = os.system('ping -c 1 ' + address + ' &> dev/null/')