Я написал сторожевой скрипт, который проверяет, правильно ли работает VPN-сервер на моей машине (доступный через Интернет). Были случайные проблемы после длительных запусков, которые требовали перезагрузки.
В цикле целевой хост пингуется. После 20 неудачных пингов машина перезагружается.
К сожалению, хост, используемый для пинга, разрешается в IP-адрес, привязанный к интерфейсу. кран0
. RTT менее миллисекунды указывают на то, что пакет не был отправлен через Интернет, поэтому маршрут, который я отслеживаю, подключен к локальному компьютеру. Машина подключена к интернету через eth0
и может пинговаться с любого компьютера. Но при использовании ping -I eth0 <хост>
, все, что я получаю, это тайм-ауты.
трассировка
показывает правильный маршрут при использовании -я eth0
но отсутствие интерфейса приводит к мгновенному выводу с одной строкой, указывающей непосредственно на мою машину (поскольку имя хоста разрешается в IP-адрес кран0
).
Ниже приведен мой сценарий (хорошо, это может не особо помочь, но тем из вас, кому интересно, взгляните на него):
#!/бин/баш
неудачно=0
в то время как [ $ неудачно -lt 20 ]; делать
эхо-н "->"
ping -c 1 -W 2 <адрес vpn-сервера> > /dev/null
если [$? -ne 0]; тогда
((неудачно++))
echo "Неудачно: $неудачно"
еще
неудачно=0
эхо-н "<-"
фи
спать 10
сделано
эхо "До свидания"
перезагрузка