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 startsé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 ~.shscripts shell , il est courant de trouver des fonctions définies comme telles;
function_name () {
echo "doing stuff for function_name"
}
puis appelé via function_namece 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 ifinstructions, les éléments entre thenet fisont exécutés et dans les cas où elseou elifsont utilisés dans les ifinstructions de manière conditionnelle.
Pour le fichier nous disecting il y a des fonctions nommées do_start, do_stopet 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 48dans /etc/wpa_supplicant/ifdown.shil 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 functionslabbling 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 [ -frecherche un fichier sous le chemin de fichier défini. Et s'il est présent, thenchargez le contenu du fichier via source(raccourci de la sourcecommande, .mais j'évite de l'utiliser dans mes scripts car il peut être mal interprété par cpet d'autres commandes, mais j'ai une digression), le fichier défini par le chemin. Ensuite, elsevérifiez que si ce fichier n'a pas été trouvé, exit 0quittez avec le statut 0le script. Ensuite, le ifstetment se termine par la fifermeture 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 -fvérifications des fichiers, -nvérifie la longueur des chaînes, -xvé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, -nvérifie si la chaîne n'est pas vide ou nullvaleur et =compare les chaînes (ou valeurs) dans les ifinstructions. Quelque chose d'autre que vous verrez dans les scripts shell et bash sous Linux avec des ifstatments elifmais c'est pour un autre jour. Dans ce script sont d'autres astuces utilisées en plus deifdes 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_BINn'est pas exécutable ou le fichier défini par $WPA_CLI_BINn'est pas exécutable, quittez avec le statut 0sans 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.shfichier. Je suggère nano /etc/wpa_supplicant/functions.shpuis j'utilise ^wou Ctrl+wpour 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.shplupart des morceaux de puzzel seront trouvés.
Maintenant, les choses deviennent looing un peu différent 'ligne ronde 135où un casestatment 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_variablemots clés définis, c'est-à-dire startou stopet 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 caseinstructions dans des forboucles, mais cela l'est également pour un autre jour.
Dans le cas des casedéclarations dans le ifupdown.shscript que nous sommes d' abord le correspondant startou le stopstatut au sein $MODEvariable et en utilisant la $PHASEvaleur pour correspondre si pre-upou post-upséquence de commande doit être appelée ou si la pre-downou post-downséquence de commandes doit être appelée à la place. Si niether startni stopoù détecté, une erreur est enregistrée, imprimée et le script est quitté avec le statut 1une erreur.