Проверьте, имеет ли соединение местонахождения доступ в Интернет

Во-первых, они должны понять понятие интерфейса. Как терминал, интерфейс является коммуникационной конечной точкой между 2 или больше программами.

Unix коренным образом изменил понятие коммуникации путем объединения понятия Межпроцессных взаимодействий с сетями. Еще лучше: все - файл.

Таким образом, оболочка является интерфейсом между пользователем и операционной системой, которая использует данный язык для взаимодействия. Ли на той же машине или по сети: "Что видишь, то и получишь".

Базовые механизмы обеспечивают слой, на котором можно связать оболочку входа в систему. Оболочка не заботится, где она связывается, потому что это не его юрисдикция. Базовые механизмы заботятся о связывании оболочки и продолжают любую задачу, Вы подаете его через интерфейс оболочки.

Кому нужна графическая среда, когда Вы получили оболочку? Неопытные пользователи, конечно!

1
18.11.2012, 23:59
4 ответа

Единственный способ сделать, чего я потребовал, кажется, загружает случайную веб-страницу и видит, соответствует ли содержание странице входа в систему или нет.

Например, выполнение:

$ wget www.google.com

Загрузит содержимое HTML страницы Google, если у меня будет доступ в Интернет, в то время как это просто содержало бы что-то как:

<!--
**
**  ZEROSHELL Captive Portal Login Page  
**
**          (Native Interface)
**
-->

<html>
<head>
<title>Web Login</title>
    ...
</html>

Если это перенаправляется к странице входа в систему. Это, кажется, работает хорошо для обнаружения то, что я хочу, даже при том, что я надеялся найти более изящное решение.

0
27.01.2020, 23:39

Кажется, что Вам нужна программа как AutoWifi.

0
27.01.2020, 23:39
  • 1
    Да, но я должен соединиться через кабель Ethernet и не Wi-Fi. –  Bakuriu 19.11.2012, 08:35

Что было бы, если?

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
0
27.01.2020, 23:39
  • 1
    Это не работает. Это будет всегда возвращать "true", даже когда у меня на самом деле нет доступа в Интернет. –  Bakuriu 19.11.2012, 10:32

Вы совершили роковую ошибку в своей команде.

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.

2
27.01.2020, 23:39

Теги

Похожие вопросы