Оказалось все очень просто.
ping <ip|url> -c <packets_count>
где:
<ip|url>
— IP или URL адрес
ip
— IP-адрес (например 8.8.8.8
или 192.168.0.1
)
url
— URL-адрес (например google.com)
<packets_count>
— количество отправленных пакетов
В следующем примере мы пингуем google.com
:
ping google.com -c 3
Вывод команды приводить не буду для экономии места, кому нужно, смотрите на PasteBin
Можно пропинговать и по IP, например, локальный роутер:
ping 192.168.0.1 -c 3
Внимание! Количество отправленных пакетов (-с <число>
), если вы используете ping
в скрипте bash нужно указать обязательно, иначе команда ping
никогда не прекратит свою работу и завесит скрипт, в отличии от команды ping
в Windows (она по умолчанию посылает 5 пакетов и прекращает работу).
Естественно, для анализа работы ping в скрипте, нам потребуются коды возврата.
К сожалению, в официальном man для команды ping
их, почему-то забыли указать.
0 — Success (хоть один из пакетов дошел до адреса)
1 — No reply (не один из пакетов до пингуемого адреса не дошел)
2 — Other error (другая ошибка, в большинстве случаев — «сеть недоступна»).
Если произошла ошибка с кодом 2
, то команда ping
выводит на stderr
сообщение об ошибке, например:
ping 8.8.8.8 -c 3
connect: Network is unreachable
ping
является полуинтерактивной командой, и показывает параметры отправленных пакетов (см. на PasteBin), если это не нужно, можно отключить вывод стандартным способом, перенаправив вывод команды ping
из stdin
и stderr
в /dev/null
, например:
ping 8.8.8.8 -c 3 >/dev/null 2>/dev/null
где:
>/dev/null
— перенаправление stdin
в нуль-устройство
2>/dev/null
— перенаправление stderr
в нуль-устройство
Простейшее использование команды ping
в скрипте:
#!/bin/bash #testping # $1 - IP or URL address ping $1 -c 3 >/dev/null 2>/dev/null if [ $? -eq 0 ]; then echo "Pinging!" else echo "Not pinging!" fi
smallwolfie@wolfschanze:~/nettest$ ./testping 8.8.8.8
Pinging!
smallwolfie@wolfschanze:~/nettest$ ./testping 666.666.666.666
Not pinging!
smallwolfie@wolfschanze:~/nettest$ ./testping 192.168.0.55
Not pinging!
smallwolfie@wolfschanze:~/nettest$ ./testping example.org
Pinging!