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 start
sequê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 ~.sh
scripts shell , é comum encontrar funções definidas assim;
function_name () {
echo "doing stuff for function_name"
}
e depois chamado via function_name
posterior 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 if
declarações, as coisas entre then
e fi
são executadas e em instâncias em que else
ou elif
são usadas nas if
declarações condicionalmente.
Para o arquivo estamos disecting existem funções nomeadas do_start
, do_stop
e 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.sh
há uma linha comentada (ou seja, linha enganadora com #
simble; estes são ignorados pelo intruso de script ... principalmente), com a source functions
labuta 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 [ -f
está procurando um arquivo no caminho definido. E, se presente, then
carregar o conteúdo do arquivo via source
(mão de source
comando curta é, .
mas eu evito usá-lo em meus scripts, porque ele pode ser mal interpretado por cp
e outros comandos, mas o que eu tenho) é o arquivo definido pelo caminho. A seguir, else
verifique se o arquivo não foi encontrado exit 0
com o status de 0
script. Em seguida, o if
stetment termina com fi
açõ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 -f
verificação de arquivos, a -n
extensão da string, além de -x
verificar 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, -n
verifica se a sequência não está vazia ou não possui null
valor e =
compara as seqüências (ou valores) nas if
declarações. Outra coisa que você verá nos scripts shell e bash no Linux com if
declarações, elif
mas isso é para outro dia. Dentro deste script, há outros truques usados além deif
declaraçõ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_BIN
0
#
O arquivo que é fornecido internamente também deve ser inspecionado se não tiver certeza do que algo chamou dentro do ifupdown.sh
arquivo. Eu sugiro que, em nano /etc/wpa_supplicant/functions.sh
seguida, use ^w
ou Ctrl+w
para 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.sh
maioria dos pecados de quebra-cabeça será encontrada.
Agora, as coisas começam a ficar um pouco diferentes da linha redonda 135
onde uma case
declaraçã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 case
afirmações, estamos basicamente pesquisando o conteúdo das $some_variable
palavras-chave defiened, start
ou seja, stop
e 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 case
declarações dentro de for
loops, mas isso também ocorre em outro dia.
No caso das case
declarações dentro ifupdown.sh
script que está combinando primeiro o start
ou stop
status dentro $MODE
variável e usando $PHASE
o valor para corresponder se pre-up
ou post-up
sequência de comando deve ser chamado ou se o pre-down
ou post-down
sequência de comandos deve ser chamado em seu lugar. Se niether start
nem stop
onde for detectado, um erro será registrado, impresso e o script será encerrado com status de 1
erro.