Version corta
Respondido por dudek ya; ese directorio se usa para scripts que le dicen a su sistema cómo manejar las cosas que se conectan o desconectan de él.
Consulte "Versión larga" para ver los intentos de explicar cómo he llegado a comprender el guión en cuestión. Básicamente, después de ejecutar algunas comprobaciones y cargar algunas funciones externas, comprueba si debe ejecutarse la start
secuencia de comandos, o si se produce un stop
error al salir y salir.
Ah, sí, podría bloquear el acceso remoto si toca las configuraciones de red de una manera que no le gusta mucho al RPi. He tocado mis configuraciones de red de manera tan ruda en el pasado en mi RPi que ha sido más fácil comenzar desde una nueva instalación. Sea cauteloso y considere mover la temperatura de RPi a una ubicación que sea fácil de iniciar sesión.
Versión larga
Mirando a través de este archivo en mi RPi parece bien comentado y no se usa para muchas llamadas de funciones externas. Pero ha pedido términos simples, así que haré todo lo posible para explicarle cómo llegar a comprender este tipo de scripts, ya que parece que es un usuario de RPi como yo (configuración de servidor remoto sin cabeza). podría comprobar lo que ya he escrito en el RPi StackExchange para la reconexión automática a redes WiFi ocultas, ya que puede tener otros trucos útiles para los requisitos de su servidor.
Para ayudar a responder sus preguntas aquí hay un poco de expansión de sintaxis de scripts de shell;
En los ~.sh
scripts de shell es común encontrar funciones definidas así;
function_name () {
echo "doing stuff for function_name"
}
y luego llamado a través de function_name
este último en el script, a veces dentro de otras funciones. Funciones, archivos de script y si las declaraciones son solo listas de comandos para ejecutar. En el caso de las funciones, las cosas entre {
y }
se ejecutan y, en el caso de las if
declaraciones, las cosas entre then
y fi
se ejecutan y en las inserciones donde else
o elif
se usan dentro de las if
declaraciones condicionalmente.
Para el archivo que estamos diseñando hay funciones nombradas do_start
, do_stop
y algunas funciones definidas en otros archivos ... "¿Qué archivos están definidos estas otras funciones?" o "¿Cómo puedo encontrar si el script a carga funciones del archivo b?" son dos preguntas que primero tendremos que responder.
Alrededor de la línea 48
en la /etc/wpa_supplicant/ifdown.sh
que hay una línea comentada (es decir beguining línea con #
simble; éstos son ignorados por intrupriter guión ... sobre todo) con source functions
labbling coventently las próximas líneas destinados PERPOS ~
# source functions
if [ -f /etc/wpa_supplicant/functions.sh ]; then
. /etc/wpa_supplicant/functions.sh
else
exit
fi
Tenga en cuenta que este es un buen ejemplo de comportamiento de secuencias de comandos; comprobando si hay un archivo antes de asumir que lo está.
El primer bit if [ -f
es buscar un archivo bajo la ruta de archivo definida. Y si está presente then
el contenido de carga del archivo a través de source
(la abreviatura del source
comando es .
pero evito usarlo en mis scripts porque puede ser mal interpretado por cp
y otros comandos, pero digress que tengo) el archivo definido por la ruta. A continuación, se else
verifica que si ese archivo no se encuentra, exit 0
salga con el estado 0
del script. Luego, el if
stetment termina con fi
acciones cerradas para tomar si la primera declaración no fue aprobada. O en otras palabras, si /etc/wpa_supplicant/functions.sh no funcionaexsist luego salga, de lo contrario cargue esas funciones y continúe procesando. Este tipo de comprobación doble si un valor o archivo está presente es algo que verá repetido a lo largo del script en cuestión, así como otros scripts, -f
verifica los archivos, -n
verifica la longitud de la cadena, -x
verifica no solo si hay un archivo sino también si el usuario que ejecuta el script tiene permisos ejecutables para el archivo definido, -s
verifica si un archivo está vacío, -n
verifica si la cadena no está vacía o no tiene null
valor, y =
compara las cadenas (o valores) en las if
declaraciones. Algo más que verá en los scripts de shell y bash en Linux con if
declaraciones, elif
pero eso será para otro día. Dentro de este script hay otros trucos utilizados además deif
declaraciones como operadores ||
"o", &&
"y", y !
"no", como en línea 55
~
# quit if executables are not installed
if [ ! -x "$WPA_SUP_BIN" ] || [ ! -x "$WPA_CLI_BIN" ]; then
exit 0
fi
~ que simplemente dice estados, si el archivo definido por no$WPA_SUP_BIN
es ejecutable o el archivo definido por no es ejecutable, salga con el estado sin procesar más. Estos pueden parecer complejos al principio, pero leerlos en voz alta en una sintaxis más humana puede ayudar cuando se aprende por primera vez, para los simples, y agregar comentarios con los complejos es realmente útil al aprender o volver al tema más adelante.$WPA_CLI_BIN
0
#
El archivo que se obtiene internamente también debe inspeccionarse si no está seguro de lo que se llama dentro del ifupdown.sh
archivo. Sugeriría nano /etc/wpa_supplicant/functions.sh
y luego usar ^w
o Ctrl+w
para buscar el nombre de la función sobre la que desea saber más. Porque entre cualquier tarea que se llame este guión y se encontrará el contenido de la functions.sh
mayoría de los puzzel peces.
Ahora las cosas se vuelven un poco diferentes en la línea redonda 135
donde case
se inicia una declaración, este tipo de declaraciones tienen una estructura segura que podemos usar para ayudar a decodificar las operaciones.
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
En el ejemplo anterior, al igual que con otras case
declaraciones, estamos buscando esencialmente el contenido de $some_variable
las palabras clave desafiadas, es decir, start
o, stop
y si se encuentra la palabra clave, emita comandos encontrados entre el seguimiento )
y la preselección ;;
que actúan para separar las diferentes acciones que se deben tomar para varias claves. palabras encontradas Tenga en cuenta que en algunos scripts puede encontrar estas case
declaraciones dentro de los for
bucles, pero eso también es para otro día.
En el caso de las case
declaraciones dentro de ifupdown.sh
la escritura estamos igualando el primero start
o el stop
estatus dentro de $MODE
la variable y el uso de $PHASE
valor para que coincida si pre-up
o post-up
secuencia de comandos debe ser llamado o si el pre-down
o la post-down
secuencia de comandos se debe llamar en su lugar. Si no se detecta start
ni stop
dónde, se registra un error, se imprime y se sale del script con el estado 1
un error.