Я хочу использовать bash-скрипт на своем Raspberry Pi, чтобы проверить, все еще ли соединение с интернетом.
Я нашел этот скрипт, который расширил:
#!/bin/bash
# I do not work properly
if [[ "$(ping -c 1 8.8.8.8 | grep 'Network is unreachable' )" != "" ]]; then
echo "Network isn't present"
sudo shutdown -r 0
exit 1
fi
# I work properly
if [[ "$(ping -c 1 8.8.8.8 | grep '100% packet loss' )" != "" ]]; then
echo "Internet isn't present"
sudo shutdown -r 0
exit 1
else
echo "Internet is present"
exit 0
fi
Вторая часть работает хорошо, а первая - нет.
Я отключил Ethernet-кабель и получил сообщение об ошибке типа connect: Network is unreachable
. Так, как и ожидалось. Но я не понимаю, почему мой сценарий не поднимает его? Я думаю, что это как-то связано с сообщением об ошибке, а не с выводом. Но я не знаю, как мне пришлось бы настроить свой сценарий так, чтобы он также выводил сообщения об ошибках, предполагая, что это правильно.
Я нашел способ, как получить вывод для регистрации grep с помощью этой строки ping -c 1 8.8.8.8 2> >(grep 'unreachable';)
. Тем не менее, это все равно делает мой скрипт неудачным, потому что он больше не распознается остальной частью этой строки И я также не совсем понимаю, что делает 2> >()
.