Если вы используете стандартный инструмент GNU / Linux ping
, то в руководстве указано :
Если ping не получает никаких ответных пакетов, он завершится с кодом 1. Если заданы и количество пакетов, и крайний срок, и к моменту наступления крайнего срока получено меньше, чем количество пакетов, он также выйдет с кодом 1. При другой ошибке он выйдет с кодом 2. В противном случае он завершается с кодом 0. Это позволяет использовать код выхода, чтобы узнать, жив ли хост или нет.
Это означает, что вы можете захватить код выхода из команды в оболочке и включить который. Для bash:
if ping -c1 192.168.1."$i" ; then
echo "Unit ${i} is online"
else
echo "Unit ${i} is offline"
fi
Или как однострочный, используя ||
и &&
:
ping -c 192.168.1."$i" && echo "Unit ${i} is online" || echo "Unit ${i} is offline"