Я хочу написать скрипт, чтобы проверить, встал ли сервер, а если нет, спать в течение 30 секунд и снова пинговать. Но я хочу, чтобы он повторял цикл в течение 10 минут или 20 раз. Мне нужно использовать это, потому что мой другой скрипт обновляет компьютер и перезагружается система, поэтому мне нужно ждать, пока он вернется. Я не хочу устанавливать огромное время сна, потому что это просто неэффективно.Проверьте, не зашел ли сервер
Я пинг 0.0.0.0 как пример.
Заранее благодарен!
#!/usr/bin/expect -f
set timeout 30
set max_try 20
set tries 0
spawn ping 0.0.0.0
expect {
"64 bytes from 0.0.0.0" puts "servers are up"
if [ $tries -eq $max_try ]; then
puts "Test machine taking too long to reboot"
exit
fi
timeout {incr tries;exp_continue}
}
puts "Going to exit now"
exit
** Стандартная оговорка: ** Ping проверяет только, если сетевой интерфейс встал, а не если какой-либо реальный сервис в системе. Я видел системы, которые реагировали на пинг, несмотря на то, что они полностью непригодны (из-за нарушения всех пользовательских процессов). Любое решение по мониторингу, будь то временное, как в том, что вы делаете, или постоянное, как в чем-то вроде nagios, _needs_, чтобы иметь в виду такие вещи или результаты, которые оно будет доставлять, будет полностью поддельным. –