Супер. Спасибо пользователю somedrew за сообщение здесь: https://bbs.archlinux.org/viewtopic.php?id=55485 2008-09-20 02: 09: 48
Поиск в / sys / class / net должен быть односторонним
Вот мой скрипт для проверки сетевого соединения, отличного от обратной петли.
Я использую ниже в другом скрипте, который я имею для периодического тестирования, если мой веб-сайт доступен. Если это НЕ доступно, всплывающее окно предупреждает меня о проблеме.
Сценарий ниже запрещает мне получать всплывающие сообщения каждые пять минут, когда мой ноутбук не подключен к сети.
#!/usr/bin/bash
# Test for network conection
for interface in $(ls /sys/class/net/ | grep -v lo);
do
if [[ $(cat /sys/class/net/$interface/carrier) = 1 ]]; then OnLine=1; fi
done
if ! [ $OnLine ]; then echo "Not Online" > /dev/stderr; exit; fi
Примечание для новичков в bash: Последний оператор 'if' проверяет, если НЕ [!] Онлайн, и завершает работу, если это так. Смотрите man bash и ищите «Выражения могут быть объединены» для более подробной информации.
P.S. Я чувствую, что ping - не лучшая вещь для использования здесь, потому что она нацелена на проверку соединения с конкретным хостом НЕ проверять, есть ли соединение с сетью любого рода.
P.P.S. Вышеприведенная версия работает на Ubuntu 12.04. / Sys может не существовать на некоторых других дистрибутивах. Смотрите ниже:
Современные дистрибутивы Linux включают каталог / sys в качестве виртуальной файловой системы (sysfs, сравнимый с / proc, который является procfs), который хранит и позволяет изменять устройства, подключенные к системе, тогда как многие традиционные UNIX и Unix-подобные операционные системы используют / sys как символическую ссылку на исходное дерево ядра. [цитата нужна]
Из Википедии https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard