obtém o código de saída do pppd - como?

1

Estou projetando alguns sistemas de relatórios no sistema Raspberry Pi que se conecta ao mundo através do modem USB controlado por pppd .

99,999% da conexão de tempo funciona bem, mas às vezes ela cai e outras tentativas de reconexão falham, a menos que o modem seja religado fisicamente.

Como na caixa de produção funcionará remotamente sem acesso físico a ele, então tenho que gerenciá-lo de alguma forma.

Minha idéia é rodar na inicialização do sistema, algum tipo de script em um tópico separado, veja abaixo pseudocódigo:

while(true){
  wait_for_modem_device_to_appear
  start_pppd # may_be limiting retries not to default 10, but to, say, 3
  wait_for_pppd_to_finish
  if(exitcode_is_one_of(6,7,8,10,15,16)){
    reset_usb_port_programmatically #I have tools for that
  }else{
    break
  }
}
  • Como posso obter o código de saída pppd ?
  • Devo usar outra abordagem (qual)?
por DmitryD 06.03.2018 / 15:09

2 respostas

0

Bingo!

Coloque 'nodetach' como argumento da linha de comando para o pppd e o daemon não se separará. Tudo o que é necessário é o padrão "echo $?" na próxima linha de script:

pppd call my_provider nodetach maxfail 3
echo $?
    
por 14.03.2018 / 18:05
0

Depois de chamar 'pppd', você precisa obter o valor da variável '$?'.

$? - obter o código de saída do último programa.

Para processos em segundo plano '$!' pode ser útil com alguma cobertura.

$! - obtém o PID do último processo de segundo plano que foi executado.

Cenário de exemplo:

run_background_process &
pid_of_background_process=$!
wait $pid_of_background_process
echo "Result code of background process: "$?
    
por 06.03.2018 / 15:13