Versão curta
Respondida por dudek já; esse diretório é usado para scripts que informam ao seu sistema como lidar com coisas sendo conectadas ou desconectadas dele.
Veja "Versão longa" para tentar explicar como eu entendi o script em questão. Basicamente, após executar algumas verificações e carregar algumas funções externas, ele verifica se deve executar a startsequência de comandos ou stop, ou, se houver erro e sair.
Ah, sim, poderia muito bem impedir o acesso remoto se você tocar nas configurações de rede de uma maneira que o RPi não goste. Eu toquei minhas configurações de rede de maneira tão grosseira no passado no meu RPi que ficou mais fácil começar com uma nova instalação. Seja cauteloso e considere mover o temperaroly do RPi para um local que seja mais fácil para acessar o local.
Versão longa
Olhando através deste arquivo no meu RPi, ele parece bem comentado e não é usado em muitas chamadas de funções externas. Mas você pediu termos laymens, portanto, farei o meu melhor para explicar como entendo esses tipos de scripts, pois parece que você é um usuário RPi como eu (configuração do servidor remoto sem cabeça) pode verificar o que eu já escrevi no RPi StackExchange para se reconectar automaticamente a redes WiFi ocultas, pois pode ter outros truques úteis para os requisitos do servidor.
Para ajudar a responder suas perguntas, aqui está um pouco da explicação da sintaxe dos scripts de shell;
Nos ~.shscripts shell , é comum encontrar funções definidas assim;
function_name () {
echo "doing stuff for function_name"
}
e depois chamado via function_nameposterior no script, às vezes dentro de outras funções. Funções, arquivos de script e se as declarações são apenas listas de comandos a serem executados. No caso de funções, as coisas entre {e }são executadas e, no caso de ifdeclarações, as coisas entre thene fisão executadas e em instâncias em que elseou elifsão usadas nas ifdeclarações condicionalmente.
Para o arquivo estamos disecting existem funções nomeadas do_start, do_stope algumas funções definidas em outros arquivos ... "quais arquivos são essas outras funções definded?" ou "Como localizo se o script a carrega funções do arquivo b?" são duas perguntas que precisaremos responder primeiro.
Em torno da linha 48, /etc/wpa_supplicant/ifdown.shhá uma linha comentada (ou seja, linha enganadora com #simble; estes são ignorados pelo intruso de script ... principalmente), com a source functionslabuta dissimulada dos objetivos pretendidos das próximas linhas ~
# source functions
if [ -f /etc/wpa_supplicant/functions.sh ]; then
. /etc/wpa_supplicant/functions.sh
else
exit
fi
Observe que este é um bom exemplo de comportamento de script; verificando se existe um arquivo antes de assumir que está.
O primeiro bit if [ -festá procurando um arquivo no caminho definido. E, se presente, thencarregar o conteúdo do arquivo via source(mão de sourcecomando curta é, .mas eu evito usá-lo em meus scripts, porque ele pode ser mal interpretado por cpe outros comandos, mas o que eu tenho) é o arquivo definido pelo caminho. A seguir, elseverifique se o arquivo não foi encontrado exit 0com o status de 0script. Em seguida, o ifstetment termina com fiações a serem executadas se a primeira declaração não for aprovada. Ou, em outras palavras, se /etc/wpa_supplicant/functions.sh nãoexsist, em seguida, saia; caso contrário, carregue essas funções e continue o processamento. Esse tipo de verificação duble se um valor ou arquivo está presente é algo que você verá repetido em todo o script em questão, bem como em outros scripts, a -fverificação de arquivos, a -nextensão da string, além de -xverificar se existe um arquivo, mas também se o usuário executando o script tiver permissões executáveis para o arquivo definido, -s verifica se um arquivo está vazio, -nverifica se a sequência não está vazia ou não possui nullvalor e =compara as seqüências (ou valores) nas ifdeclarações. Outra coisa que você verá nos scripts shell e bash no Linux com ifdeclarações, elifmas isso é para outro dia. Dentro deste script, há outros truques usados além deifdeclarações como operadores ||"ou", &&"e" e !" e não", como on-line 55~
# quit if executables are not installed
if [ ! -x "$WPA_SUP_BIN" ] || [ ! -x "$WPA_CLI_BIN" ]; then
exit 0
fi
~ que simplesmente coloca estados, se o arquivo definido por não$WPA_SUP_BIN for executável ou o arquivo definido por não for executável, saia com status sem processar mais. Eles podem parecer complexos no começo, mas lê-los em voz alta em uma sintaxe mais humana pode ajudar na primeira aprendizagem, para os mais simples, e adicionar comentários nos mais complexos é realmente útil ao aprender ou voltar ao assunto posteriormente.$WPA_CLI_BIN0#
O arquivo que é fornecido internamente também deve ser inspecionado se não tiver certeza do que algo chamou dentro do ifupdown.sharquivo. Eu sugiro que, em nano /etc/wpa_supplicant/functions.shseguida, use ^wou Ctrl+wpara procurar o nome da função que você deseja saber mais. Porque entre o que qualquer tarefa chama esse script e a contenção da functions.shmaioria dos pecados de quebra-cabeça será encontrada.
Agora, as coisas começam a ficar um pouco diferentes da linha redonda 135onde uma casedeclaração é iniciada; esses tipos de declarações têm uma estrutura de manutenção que podemos usar para ajudar a decodificar operações.
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
No exemplo acima, como em outras caseafirmações, estamos basicamente pesquisando o conteúdo das $some_variablepalavras-chave defiened, startou seja, stope se a palavra-chave for encontrada, emita comandos encontrados entre a execução )e a execução ;;que atuam para separar ações diferentes a serem executadas por várias chaves. palavras encontradas. Observe que em alguns scripts você pode encontrar essas casedeclarações dentro de forloops, mas isso também ocorre em outro dia.
No caso das casedeclarações dentro ifupdown.shscript que está combinando primeiro o startou stopstatus dentro $MODEvariável e usando $PHASEo valor para corresponder se pre-upou post-upsequência de comando deve ser chamado ou se o pre-downou post-downsequência de comandos deve ser chamado em seu lugar. Se niether startnem stoponde for detectado, um erro será registrado, impresso e o script será encerrado com status de 1erro.