Version courte
Déjà répondu par dudek; ce répertoire est utilisé pour les scripts qui indiquent à votre système comment gérer les choses qui y sont connectées ou déconnectées.
Voir "Version longue" pour des tentatives d'expliquer comment j'en suis venu à comprendre le script en question. Fondamentalement, après avoir exécuté quelques vérifications et chargé certaines fonctions externes, il vérifie s'il doit exécuter la start
séquence de commandes, ou stop
, ou une erreur et quitter.
Oh oui, cela pourrait très bien vous empêcher d'accéder à distance si vous touchez les configurations réseau d'une manière que le RPi n'aime pas beaucoup. J'ai tellement touché mes configurations réseau dans le passé sur mon RPi qu'il a été plus simple de commencer à partir d'une nouvelle installation. Soyez prudent et envisagez de déplacer la tempérarité RPi vers un emplacement où il est facile de se connecter localement.
Version longue
En parcourant ce fichier sur mon RPi, il semble bien commenté et il ne sert pas à de nombreux appels de fonctions externes. Mais vous avez demandé des termes simples donc je ferai de mon mieux pour expliquer comment je vais comprendre ces types de scripts, car il semble que vous soyez un utilisateur RPi comme moi (configuration du serveur distant sans tête) pourrait vérifier ce que j'ai déjà écrit sur le RPi StackExchange pour la reconnexion automatique aux réseaux WiFi cachés car il peut avoir d'autres astuces utiles pour les besoins de votre serveur.
Pour vous aider à répondre à vos questions, voici un peu d'explication de la syntaxe des scripts shell;
Dans les ~.sh
scripts shell , il est courant de trouver des fonctions définies comme telles;
function_name () {
echo "doing stuff for function_name"
}
puis appelé via function_name
ce dernier dans le script, parfois dans d'autres fonctions. Les fonctions, les fichiers de script et si les instructions ne sont que des listes de commandes à exécuter. Dans le cas des fonctions, les éléments entre {
et }
sont exécutés et dans le cas des if
instructions, les éléments entre then
et fi
sont exécutés et dans les cas où else
ou elif
sont utilisés dans les if
instructions de manière conditionnelle.
Pour le fichier nous disecting il y a des fonctions nommées do_start
, do_stop
et certaines fonctions définies dans d' autres fichiers ... « Quels sont les fichiers de ces autres fonctions definded? » ou "Comment savoir si le script a charge des fonctions à partir du fichier b?" sont deux questions auxquelles nous devrons répondre en premier.
Autour de la ligne 48
dans /etc/wpa_supplicant/ifdown.sh
il y a une ligne commentée (c. -à- ligne beguining avec #
simble, ceux - ci sont ignorés par intrupriter script ... la plupart du temps) avec source functions
labbling coventently les quelques lignes destinées PERPOS ~
# source functions
if [ -f /etc/wpa_supplicant/functions.sh ]; then
. /etc/wpa_supplicant/functions.sh
else
exit
fi
Notez que c'est un bon exemple de comportement de script; vérifier si un fichier est là avant de supposer qu'il l'est.
Le premier bit if [ -f
recherche un fichier sous le chemin de fichier défini. Et s'il est présent, then
chargez le contenu du fichier via source
(raccourci de la source
commande, .
mais j'évite de l'utiliser dans mes scripts car il peut être mal interprété par cp
et d'autres commandes, mais j'ai une digression), le fichier défini par le chemin. Ensuite, else
vérifiez que si ce fichier n'a pas été trouvé, exit 0
quittez avec le statut 0
le script. Ensuite, le if
stetment se termine par la fi
fermeture des actions à entreprendre si le premier statment ne passe pas. Ou en d'autres termes si /etc/wpa_supplicant/functions.sh ne fonctionne pasexsist puis quitte, sinon chargez ces fonctions et continuez le traitement. Ce type de duplication vérifiant si une valeur ou un fichier est présent est quelque chose que vous verrez répété tout au long du script en question ainsi que d'autres scripts, les -f
vérifications des fichiers, -n
vérifie la longueur des chaînes, -x
vérifient non seulement si un fichier est là mais aussi si l'utilisateur exécutant le script dispose d'autorisations exécutables pour le fichier défini, -s
vérifie si un fichier est vide, -n
vérifie si la chaîne n'est pas vide ou null
valeur et =
compare les chaînes (ou valeurs) dans les if
instructions. Quelque chose d'autre que vous verrez dans les scripts shell et bash sous Linux avec des if
statments elif
mais c'est pour un autre jour. Dans ce script sont d'autres astuces utilisées en plus deif
des instructions telles que ||
"ou", &&
"et" et !
"non", comme en ligne 55
~
# quit if executables are not installed
if [ ! -x "$WPA_SUP_BIN" ] || [ ! -x "$WPA_CLI_BIN" ]; then
exit 0
fi
~ qui met simplement des états, si le fichier défini par $WPA_SUP_BIN
n'est pas exécutable ou le fichier défini par $WPA_CLI_BIN
n'est pas exécutable, quittez avec le statut 0
sans traitement supplémentaire. Ceux-ci peuvent sembler complexes au premier abord, mais les lire à haute voix dans une syntaxe plus humaine peut aider lors du premier apprentissage, pour les plus simples, et l'ajout de commentaires avec #
pour les plus complexes est vraiment utile lors de l'apprentissage ou du retour au sujet.
Le fichier provenant de l'intérieur doit également être inspecté s'il n'est pas certain de ce que quelque chose appelle dans le ifupdown.sh
fichier. Je suggère nano /etc/wpa_supplicant/functions.sh
puis j'utilise ^w
ou Ctrl+w
pour rechercher le nom de la fonction que vous souhaitez en savoir plus. Parce qu'entre ce que jamais la tâche appelle ce script et le contenu de la functions.sh
plupart des morceaux de puzzel seront trouvés.
Maintenant, les choses deviennent looing un peu différent 'ligne ronde 135
où un case
statment est commencé, ces types de statments ont une structure sertain que nous pouvons utiliser pour aider à décoder les 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
Dans l'exemple ci-dessus, comme pour les autres case
énoncés, nous recherchons essentiellement le contenu des $some_variable
mots clés définis, c'est-à-dire start
ou stop
et si le mot clé est trouvé, puis émettez des commandes trouvées entre la fin )
et la pré ;;
- lecture qui agissent pour séparer les différentes actions à entreprendre pour différentes clés mots trouvés. Notez que dans certains scripts, vous pouvez trouver ces case
instructions dans des for
boucles, mais cela l'est également pour un autre jour.
Dans le cas des case
déclarations dans le ifupdown.sh
script que nous sommes d' abord le correspondant start
ou le stop
statut au sein $MODE
variable et en utilisant la $PHASE
valeur pour correspondre si pre-up
ou post-up
séquence de commande doit être appelée ou si la pre-down
ou post-down
séquence de commandes doit être appelée à la place. Si niether start
ni stop
où détecté, une erreur est enregistrée, imprimée et le script est quitté avec le statut 1
une erreur.