Sto cercando di capire il metodo WIFI di riconnessione automatica


9

Ho trovato questo metodo per ricollegare il dongle WIFI da questo post . Ma voglio essere chiaro su come funziona, prima di provare a implementarlo.

  1. Vai a /etc/ifplugd/action.d/e rinomina il ifupdownfile in ifupdown.original.
  2. Poi fare: cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown.
  3. Finalmente: sudo reboot
  1. Quando viene /etc/ifplugd/action.d/ifupdownchiamato?
  2. Cosa fa /etc/wpa_supplicant/ifupdown.shessenzialmente la sceneggiatura in termini di laici, mi sembra piuttosto complesso; e anche quando si chiama.
  3. Fare i passaggi da 1 a 3 potrebbe causare altri problemi imprevisti che impedirebbero al mio WIFI di funzionare? Sto cercando di implementarlo su un Raspberry PI, tramite SSH, senza tastiera e monitor in una posizione difficile da raggiungere.

Ho provato a Google vari bit, ma mi sono perso un po '!

Risposte:


0

ifplugd ha lo scopo di rilevare la rimozione o la riconnessione di un connettore Ethernet. La directory associata /etc/ifplugd/action.d/ ospita gli script che vengono chiamati quando, ad esempio, il connettore viene inserito (o rimosso).

Il passaggio 2 del processo causerebbe la (ri) negoziazione della connessione wpa quando il connettore viene inserito (o rimosso) e presuppone che la connessione sia WPA. Il processo di rinomina / copia che descrivi disabiliterebbe qualsiasi elaborazione preesistente eseguita nello script ifupdown preesistente, che potrebbe essere trascurabile o meno. Potresti considerare semplicemente di chiamare /etc/wpa_supplicant/ifupdown.sh aggiungendolo allo script ifupdown esistente (alla fine, per esempio), ma dipende da capire cosa c'è già nello script esistente (che è spesso semplice).

Se vuoi semplicemente rinegoziare la connessione wifi se o quando cade, invece di gestire la disconnessione fisica del connettore, potresti considerare di utilizzare questo:

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

Quella sceneggiatura è robusta, per lo più innocua, e dovrebbe fare il trucco con fermezza.


0

Versione breve

  1. Ha già risposto dudek; tale directory viene utilizzata per gli script che indicano al sistema come gestire le cose che vengono collegate o scollegate da esso.

  2. Vedi "Versione lunga" per i tentativi di spiegare come sono arrivato a capire la sceneggiatura in questione. Fondamentalmente, dopo aver eseguito alcuni controlli e aver caricato alcune funzioni esterne, verifica se deve eseguire la startsequenza di comandi o stop, oppure, uscire e uscire dall'errore.

  3. Oh sì, molto bene potrebbe bloccarti dall'accesso remoto se tocchi le configurazioni di rete in un modo che all'RPi non piace molto. Ho toccato le mie configurazioni di rete in modo così approssimativo in passato sul mio RPi che è stato più semplice iniziare da una nuova installazione. Sii cauto e considera di spostare la temperaroli di RPi in una posizione che è più semplice accedere a localmente.

Versione lunga

Guardando questo file sul mio RPi sembra ben commentato e non viene utilizzato per molte chiamate di funzioni esterne. Ma hai chiesto termini per i laici, quindi farò del mio meglio per spiegare come sto andando a comprendere questo tipo di script, tuttavia, poiché sembra che tu sia un utente RPi come me (configurazione del server remoto senza testa) ya potrebbe voler controllare ciò che ho già scritto su RPi StackExchange per la riconnessione automatica a reti WiFi nascoste in quanto potrebbe avere altri trucchi utili ai requisiti del tuo server.

Per aiutare a rispondere alle tue domande ecco un po 'di scadenza della sintassi dello script di shell;

Negli ~.shscript di shell è comune trovare funzioni definite in questo modo;

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

e poi chiamato tramite function_namequest'ultimo su nello script, a volte all'interno di altre funzioni. Funzioni, file di script e se le istruzioni sono solo elenchi di comandi da eseguire. Nel caso delle funzioni, le cose tra {e }vengono eseguite e nel caso di ifistruzioni le cose tra thene fivengono eseguite e negli istanti in cui elseo elifvengono utilizzate in ifmodo condizionale all'interno delle istruzioni.

Per il file che stiamo disecting ci sono funzioni denominate do_start, do_stope alcune funzioni definite in altri file ... "quali file vengono queste altre funzioni definded?" o "Come trovo se lo script a carica le funzioni dal file b?" sono due domande a cui dovremo rispondere per prime.

Intorno alla linea 48in /etc/wpa_supplicant/ifdown.shc'è una linea commentata (cioè beguining linea con #simble, che vengono ignorati dallo script intrupriter ... per lo più) con source functionscoventently labbling le prossime righe destinati perpos ~

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

Nota che questo è un buon esempio di comportamento di scripting; controllando se c'è un file prima di supporre che lo sia.

Il primo bit if [ -fsta cercando un file nel percorso del file definito. E se presente thencarica il contenuto del file tramite source(la scorciatoia del sourcecomando è .ma evito di usarlo nei miei script perché può essere erroneamente aggiornato da cpe altri comandi ma ho il digress) il file definito dal percorso. Il prossimo è un elsecontrollo che se quel file non è stato trovato exit 0uscire con lo stato 0lo script. Quindi lo ifstetment termina con la fichiusura delle azioni da eseguire se il primo statment non è stato approvato. O in altre parole se /etc/wpa_supplicant/functions.sh noexsist quindi esce, altrimenti carica quelle funzioni e continua l'elaborazione. Questo tipo di doppio controllo se è presente un valore o un file è qualcosa che vedrai ripetuto in tutto lo script in questione così come altri script, i -fcontrolli per i file, -ncontrolla la lunghezza della stringa, -xcontrolla non solo se c'è un file ma anche se l'utente che esegue lo script dispone delle autorizzazioni eseguibili per il file definito, -s controlla se un file è vuoto, -ncontrolla se la stringa non è vuota o nullvalore e =confronta le stringhe (o i valori) negli ifstatuti. Qualcos'altro che vedrai negli script shell e bash su Linux con ifistruzioni, elifma è per un altro giorno. All'interno di questo script sono utilizzati altri trucchi oltre aifistruzioni come ||"o", &&"e" e !"non" operatori, come on line 55~

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

~ che indica semplicemente gli stati, se il file definito da non$WPA_SUP_BIN è eseguibile o il file definito da non è eseguibile, uscire con lo stato senza ulteriore elaborazione. All'inizio possono sembrare complessi, ma leggerli ad alta voce in una sintassi più umana può aiutare quando si apprende per la prima volta, per i più semplici, e aggiungere commenti con quelli complessi è davvero utile quando si impara o si torna all'argomento successivo.$WPA_CLI_BIN0#

Il file che proviene internamente dovrebbe anche essere ispezionato se non si è sicuri di ciò che qualcosa ha chiamato all'interno del ifupdown.shfile. Suggerirei nano /etc/wpa_supplicant/functions.shquindi di utilizzare ^wo Ctrl+wper cercare il nome della funzione di cui desideri saperne di più. Perché tra ciò che mai il compito chiama questo script e la contesa della functions.shmaggior parte delle parti di puzzle si troverà.

Ora le cose arrivano a cercare una linea rotonda un po ' diversa da 135dove caseviene avviato uno statment, questi tipi di statments hanno una struttura serena che possiamo usare per aiutare a decodificare le opearations.

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

Nell'esempio precedente, come con altre caseaffermazioni, stiamo essenzialmente cercando il contenuto delle $some_variableparole chiave defiened, ovvero starto stope se viene trovata la parola chiave, emettiamo i comandi trovati tra il trailing )e il presead ;;che agiscono per separare le diverse azioni da intraprendere per varie chiavi parole trovate. Nota in alcuni script potresti trovare queste caseistruzioni all'interno di forloop ma anche quello è per un altro giorno.

Nel caso delle caseistruzioni all'interno ifupdown.shdi script stiamo primo corrispondente al starto stopstatus all'interno $MODEvariabile e utilizzando $PHASEil valore in modo che corrisponda se pre-upo post-upsequenza di comando dovrebbe essere chiamata o se la pre-downo post-downsequenza di comandi dovrebbe essere chiamato invece. Se niether startstopdove rilevato, viene registrato un errore, stampato e lo script viene chiuso con stato 1un errore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.