Estou observando wpa_supplicant
para poder matar meu script se a senha estiver errada.
Eu apresento todo o bloco de código abaixo. Posso ver a echo
execução, mas exit
parece que não interrompeu meu script principal.
(sudo stdbuf -o0 wpa_supplicant -Dwext -i$wifi -cwifi.conf 2>&1 \
| grep -m 1 "pre-shared key may be incorrect" \
&& echo I see this \
&& exit) &
Eu suspeito que exit
aqui está apenas matando um tópico que estava em segundo plano.
É esse o caso? Se sim, como posso ser kill
o pai aqui?
Responder1
Você pode passar o pid
script principal para o subshell e depois kill
quando quiser:
export mypid=$$
(sudo stdbuf -o0 wpa_supplicant -Dwext -i$wifi -cwifi.conf 2>&1 \
| grep -m 1 "pre-shared key may be incorrect" \
&& echo I see this \
&& kill $mypid) &
Responder2
Certo, exit
está afetando o processo que está em segundo plano, proporcionando status de saída zero. Eu não chamaria isso de “matar”, já que o processo estava prestes a parar de qualquer maneira.
Execute o comando wpa em segundo plano e acompanhe seu PID para não precisar usar killall
:
bash -c 'echo $$ > /tmp/pid; exec wpa_supplicant 2>&1 > /tmp/out' &
sleep 1
egrep 'pre-shared key may be incorrect' /tmp/out && kill `cat /tmp/pid`
Eu sei, seu comando wpa é um pouco mais longo, abreviei para chamar a atenção para as partes importantes.