Во-первых, они должны понять понятие интерфейса. Как терминал, интерфейс является коммуникационной конечной точкой между 2 или больше программами.
Unix коренным образом изменил понятие коммуникации путем объединения понятия Межпроцессных взаимодействий с сетями. Еще лучше: все - файл.
Таким образом, оболочка является интерфейсом между пользователем и операционной системой, которая использует данный язык для взаимодействия. Ли на той же машине или по сети: "Что видишь, то и получишь".
Базовые механизмы обеспечивают слой, на котором можно связать оболочку входа в систему. Оболочка не заботится, где она связывается, потому что это не его юрисдикция. Базовые механизмы заботятся о связывании оболочки и продолжают любую задачу, Вы подаете его через интерфейс оболочки.
Кому нужна графическая среда, когда Вы получили оболочку? Неопытные пользователи, конечно!
Единственный способ сделать, чего я потребовал, кажется, загружает случайную веб-страницу и видит, соответствует ли содержание странице входа в систему или нет.
Например, выполнение:
$ wget www.google.com
Загрузит содержимое HTML страницы Google, если у меня будет доступ в Интернет, в то время как это просто содержало бы что-то как:
<!--
**
** ZEROSHELL Captive Portal Login Page
**
** (Native Interface)
**
-->
<html>
<head>
<title>Web Login</title>
...
</html>
Если это перенаправляется к странице входа в систему. Это, кажется, работает хорошо для обнаружения то, что я хочу, даже при том, что я надеялся найти более изящное решение.
Что было бы, если?
if [[ $(ping -c1 -w1 google.com) ]]
then
echo "All good in the hood"
else
echo "Where are my interwebs?"
fi
или как одна строка
if [[ $(ping -c1 -w1 google.com) ]]; then echo "All good in the hood"; else; echo "Where are my interwebs?"; fi
Вы совершили роковую ошибку в своей команде.
ping -q -w 1 -c 1 `ip r | grep default | cut -d ' ' -f 3` > /dev/null && echo ok || echo error
Команда ip r | grep default | cut -d ' ' -f 3
возвращает ваш шлюз по умолчанию. В результате ping
, вместо проверки Google, проверяет маршрутизатор, к которому вы подключены. Маршрутизатор отправит обратно пакет, что делает всю команду верной. Поэтому он всегда возвращает "ОК". Он вообще не проверяет подключение к интернету. Но посмотрите на это с другой стороны. Он проверяет, подключены ли вы к локальной сети.
В любом случае, вы можете использовать ping -q -w 1 -c 1 google.com > /dev/null && echo ok || echo error
вместо использования ip r | grep default | cut -d ' ' -f 3
.