Intereting Posts
Запустить скрипт при выключении Как подключиться к Gnome 3 с клиентом Windows VNC? Как преобразовать беззнаковое десятичное число (менее 1 << 32) в 4 байта (двоичное) в bash? Как проверить версию прошивки в Solaris? getopt, getopts или ручной синтаксический анализ – что использовать, когда я хочу поддерживать как короткие, так и длинные варианты? Как динамически создавать Symlink для динамически созданного файла в папке Список всех обычных файлов, содержащих (в их имени, каталоге или их содержимом) определенную (под) строку sshfs: тип файла отличается от точки монтирования Возможно ли одновременно установить как Gstreamer 0.10, так и Gstreamer 1.0? Не удается подключиться к Интернету, но может SSH в Solaris x86 (против 11) USB-порты не пробуждаются от приостановки до ОЗУ FreeRadius SQL-авторизация и Perl-аутентификация Удалите новую строку перед `/ etc / issue` в tty Требуется ли /etc/resolv.conf при использовании статического IP-адреса? Каков механизм моего скрипта, который потерял исполняемый бит после добавления к нему скрипта?

Попытка понять, как автоподключить метод WIFI

Я нашел этот способ повторного подключения ключа WIFI с этого поста . Но я хочу четко сказать, как это работает, прежде чем я попытаюсь его реализовать.

  1. Перейдите в /etc/ifplugd/action.d/ и переименуйте файл ifupdown.original в ifupdown.original .
  2. Затем выполните: cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown .
  3. Наконец: sudo reboot
  1. Когда вызывается /etc/ifplugd/action.d/ifupdown ?
  2. Что делает сценарий /etc/wpa_supplicant/ifupdown.sh существу, в терминах мирской жизни, он выглядит довольно сложным для меня; и когда его называют тоже.
  3. Могут ли шаги 1-3 развиваться из-за каких-либо других непредвиденных проблем, которые помешали бы моему WIFI работать? Я пытаюсь реализовать это на Pasp Raspberry через SSH без клавиатуры и монитора в труднодоступном месте.

Я попробовал разные биты Google, но немного потерялся!

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

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

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

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

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

Укороченная версия

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

  2. См. «Длинная версия» для попыток объяснить, как я понял этот сценарий. В основном после запуска некоторых проверок и загрузки некоторых функций externall он проверяет, должен ли он запускать либо последовательность start команд, либо stop , либо выходить из системы и выходить из нее.

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

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

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

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

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

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

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

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

Вокруг строки 48 в /etc/wpa_supplicant/ifdown.sh есть прокомментированная строка (например, строка, начинающая с # simble, в основном игнорируется скриптом intrupriter …) с source functions коунитивно владеющими намеченными рядом строк,

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

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

Первый бит, if [ -f проверяет файл в определенном пути к файлу. А если присутствует, then загружайте содержимое файла через source (короткая команда из source команды, но я не использую его в своих сценариях, потому что его можно игнорировать с помощью cp и других команд, но у меня есть) файл, определяемый контуром. Далее следует проверить, что если этот файл не был найден, exit 0 завершится со статусом 0 сценария. Затем, if stetment заканчивается с fi чтобы закрыть действия, которые нужно предпринять, если первый элемент не прошел. Или, другими словами, если /etc/wpa_supplicant/functions.sh не exsist, тогда выйдите, иначе загрузите эти функции и продолжите обработку. Этот вид проверки правильности, если присутствует значение или файл, – это то, что вы увидите во всем рассматриваемом скрипте, а также другие скрипты, -f проверяет файлы, -n проверяет длину строки, -x проверяет не только, если файл есть, но также, если пользователь, выполняющий скрипт, имеет исполняемые разрешения для определенного файла, -s проверяет, является ли файл пустым, -n проверяет, не является ли строка пустой или null значением, и = сравнивает строки (или значения) в if statments. Что-то еще вы увидите в сценариях оболочки и bash на Linux, if statments elif но это еще один день. Внутри этого скрипта используются другие трюки, используемые в дополнение к тому, if такие статусы, как || "или", && "и", и ! «не», например, на линии 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 , не является исполняемым, а затем $WPA_CLI_BIN со статусом 0 без дальнейшей обработки. Они могут выглядеть сложными сначала, но чтение их вслух в более синтаксисе человека может помочь, когда первое обучение, для простых и добавление комментариев с # для сложных, действительно полезно при обучении или возвращении к последнему.

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

Теперь все становится для того, чтобы ухаживать немного разной «круглой линией 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 содержимое $some_variable для определяемых ключевых слов, т. Е. Запуска или stop и если ключевое слово найдено, то выдают команды, найденные между трейдингом ) и предпродажа ;; который действует, чтобы разделить различные действия, которые необходимо предпринять для различных ключевых слов. Обратите внимание, что в некоторых сценариях вы можете найти эти case for внутри цикла, но это тоже на другой день.

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