Попытка понять Автоматический повторно подключает метод WI-FI

Все устройства имеют a major, minor пара числа. major число является большим, больше универсальной категории (например, жесткие диски, устройства ввода-вывода и т.д....) в то время как minor число более конкретно (т.е. говорит то, что соединяет шиной устройство, подключен с).

Проверьте документацию ядра на большее количество примеров.

8
13.04.2017, 15:56
2 ответа

ifplugd предназначен для обнаружения удаления или повторного подключения разъема Ethernet. Связанный каталог / etc / ifplugd / action.d / hosts скрипты, которые вызываются, например, когда коннектор вставлен (или удален).

Шаг 2 в вашем процессе приведет к (повторному) согласованию соединения wpa, когда соединитель вставлен (или удален), и предполагается, что соединение является WPA. Процесс переименования / копирования, который вы описываете, отключит любую ранее существующую обработку, выполняемую в уже существующем сценарии ifupdown, что может быть незначительным или нет. Вы можете просто вызвать /etc/wpa_supplicant/ifupdown.sh, добавив его к существующему сценарию ifupdown (например, в конце), но это зависит от понимания того, что уже есть в существующем сценарии (что часто бывает просто).

Если вы просто хотите повторно согласовать подключение Wi-Fi в случае его разрыва, вместо того, чтобы обрабатывать физическое отключение коннектора, вы можете использовать следующее:

https://raw.githubusercontent.com/dweeber/WiFi_Check/ master / WiFi_Check

Этот сценарий надежен, в основном безвреден и должен надежно справиться с задачей.

0
27.01.2020, 20:13

Краткая версия

  1. Уже ответил dudek; этот каталог используется для сценариев, которые сообщают вашей системе, как обрабатывать вещи, которые подключаются к ней или отключаются от нее.

  2. См. «Расширенная версия», чтобы объяснить, как я пришел к пониманию рассматриваемого сценария. Обычно после выполнения некоторых проверок и загрузки некоторых внешних функций он проверяет, следует ли запускать последовательность команд start , или stop , либо ошибку и выход.

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

Длинная версия

Просматривая этот файл на моем RPi, он кажется хорошо прокомментирован и не используется для многих вызовов внешних функций.Но вы просили об условиях непрофессионала, поэтому я сделаю все возможное, чтобы объяснить, как я подхожу к пониманию таких сценариев, хотя, похоже, вы пользователь RPi, как и я (установка удаленного сервера без головы) ya Я мог бы проверить то, что я уже писал на RPi StackExchange для автоматического повторного подключения к скрытым сетям Wi-Fi, поскольку у него могут быть другие уловки, полезные для требований вашего сервера.

Чтобы помочь в ответе на ваши вопросы, вот небольшое объяснение синтаксиса сценариев оболочки:

В сценариях оболочки ~ .sh обычно можно найти функции, определенные таким образом;

function_name () {
    echo "doing stuff for function_name"
}

, а затем вызывается через имя_функции последнее в скрипте, иногда в других функциях. Функции, файлы сценариев и статусы if - это просто списки выполняемых команд. В случае функций выполняется содержимое между { и } , а в случае , если устанавливает содержимое между , затем и fi и в инстанциях, где else или elif используются в if состояниях условно.

Для файла, который мы открываем, есть функции с именами do_start , do_stop и некоторые функции, определенные в других файлах ... «Какие файлы определены этими другими функциями?» или "Как узнать, загружает ли сценарий a функции из файла b?" это два вопроса, на которые нам нужно ответить в первую очередь.

Вокруг строки 48 в / etc / wpa_supplicant / ifdown.sh есть закомментированная строка (то есть строка, начинающаяся с # simble; они игнорируются взломщиком сценария ... в основном) с исходными функциями , условно помечающими следующие несколько строк perpos ~

# source functions
if [ -f /etc/wpa_supplicant/functions.sh ]; then
    . /etc/wpa_supplicant/functions.sh
else
    exit
fi

Обратите внимание, что это хороший пример поведения сценария; проверка наличия файла перед тем, как предположить, что он есть.

Первый бит , если [-f проверяет наличие файла по заданному пути к файлу. И если присутствует , то загружает содержимое файла через источник (сокращение команды source - . , но я избегаю использовать ее в своих сценарии, потому что он может быть ошибочно введен cp и другими командами, но я отвлекся) файл, определенный путем. Затем выполняется проверка else , что, если этот файл не был найден, exit 0 завершает сценарий со статусом 0 . Затем шаг if заканчивается на fi , чтобы закрыть действия, которые необходимо предпринять, если первое условие не прошло. Или, другими словами, если /etc/wpa_supplicant/functions.sh не не exsist, то выйдите, иначе загрузите эти функции и продолжите обработку.Этот вид двойной проверки наличия значения или файла - это то, что вы будете повторять в рассматриваемом скрипте, а также в других скриптах, -f проверяет файлы, -n проверяет длину строки, -x проверяет не только наличие файла, но также наличие у пользователя, запускающего сценарий, разрешений на выполнение для указанного файла, -s проверяет, является ли файл пусто, -n проверяет, не является ли строка пустой или нулевым значением, а = сравнивает строки (или значения) в if состояниях. Что-то еще вы увидите в сценариях оболочки и bash в Linux с if statments elif , но это на другой день.В этом скрипте есть другие уловки , используемые в дополнение к if статам, такие как || "or", && "и", и ! операторы «не», например в строке 55 ~

# quit if executables are not installed
if [ ! -x "$WPA_SUP_BIN" ] || [ ! -x "$WPA_CLI_BIN" ]; then
    exit 0
fi

~, которые просто помещают состояния, если файл, определенный в $ WPA_SUP_BIN , является не исполняемым или файл, определенный параметром $ WPA_CLI_BIN , является не исполняемым, тогда выйдите со статусом 0 без дальнейшей обработки. Сначала они могут показаться сложными, но их чтение вслух с использованием более человеческого синтаксиса может помочь при первом обучении для простых, а добавление комментариев с помощью # для сложных действительно полезно при обучении или возвращении к тема последняя.

Файл, полученный из внутреннего источника, также следует проверить, если вы не уверены в том, что что-то вызвало в файле ifupdown.sh . Я бы предложил nano /etc/wpa_supplicant/functions.sh, а затем использовать ^ w или Ctrl + w для поиска нужного имени функции. чтобы узнать больше о. Потому что между тем, что когда-либо задача вызывает этот сценарий, и контекстом functions.sh будет обнаружено большинство элементов головоломки.

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

case $some_variable in
    start)
         echo "The word [start] was detected in \$some_variable"
    ;;
    stop)
         echo "The word [stop] was detected in \$some_variable"
    ;;
    *)
         echo "The word [$some_variable] was detected in \$some_variable but not understood"
    ;;
esac

В приведенном выше примере, как и в других case статусах, мы, по сути, ищем в содержимом $ some_variable ключевые слова, которые были определены, то есть start или stop , и если ключевое слово найдено, то выдают команды, найденные между отслеживанием ) и предварительным вводом ;; , которые действуют для разделения различных действий, выполняемых для различных найденных ключевых слов. Обратите внимание, что в некоторых сценариях вы можете найти эти case состояния в для циклов, но это тоже на другой день.

В случае операторов case в скрипте ifupdown.sh мы сначала сопоставляем статус start или stop в переменная $ MODE и использование значения $ PHASE для сопоставления, если последовательность команд pre-up или post-up должна быть вызвана ] или , если вместо этого следует вызывать последовательность команд pre-down или post-down . Если ни start , ни stop , где обнаружены, то ошибка регистрируется, печатается и сценарий завершается со статусом 1 ошибка.

0
27.01.2020, 20:13

Теги

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