Прежде всего, позвольте мне отметить, что вы, вероятно, захотите использовать для этого более полное программное обеспечение для мониторинга, такое как Nagios .
Для базового скриптового решения в Linux я бы использовал Bash для этого:
#!/bin/bash
ping -c 1 yourhost.com
if [ $? -eq 0 ]; then
your_command
fi
Windows довольно похожа на самом деле. Поместите это в файл .bat
:
ping -n 1 yourhost.com
IF %ERRORLEVEL%==0 (
your_command
)
Объяснение: команда ping возвращает код завершения в обеих операционных системах. В Linux (Bash) у вас есть $?
переменная, чтобы получить этот код выхода, в Windows это %errorlevel%
. Когда эхо-запрос успешен, код выхода в обеих операционных системах равен 0, в противном случае - 1. Это значение можно использовать для условного запуска вашей команды.
Добавление цикла:
В Linux:
#!/bin/bash
result=1
while [ $result -neq 0 ]; do
ping -c 1 yourhost.com
result=$?
done
На Windows то же самое будет:
:loop
ping -n 1 yourhost.com
IF NOT %ERRORLEVEL%==0 (
goto loop
)
your_command
Примечание: Если вы хотите использовать его каждый раз, когда хост находится в сети, вы можете использовать crontab в Linux или планировщик задач в Windows. Если вы хотите запускать его каждый раз, когда хост подключается к сети, вам необходимо соответствующее программное обеспечение для мониторинга.