pppd 종료 코드 받기 - 어떻게 얻나요?

pppd 종료 코드 받기 - 어떻게 얻나요?

저는 pppd.

연결은 99,999% 동안 잘 작동하지만 때로는 연결이 끊어지고 모뎀을 물리적으로 다시 연결하지 않으면 추가 재연결 시도가 실패합니다.

프로덕션 박스는 원격으로 작동하고 물리적으로 접근할 수 없기 때문에 어떻게든 관리해야 합니다.

내 생각은 시스템 시작 시 별도의 스레드에서 일종의 스크립트를 실행하는 것입니다. 아래 의사코드를 참조하세요.

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
  }
}
  • pppd종료 코드를 어떻게 얻을 수 있나요 ?
  • 다른 방법(어떤 방법)을 사용해야 합니까?

답변1

"pppd"를 호출한 후에는 "$?" 변수의 값을 가져와야 합니다.

$?- 마지막 프로그램의 종료 코드를 가져옵니다.

백그라운드 프로세스 '$!'에 일부 덮개를 추가하는 것이 유용할 수 있습니다.

$!- 마지막으로 실행된 백그라운드 프로세스의 PID를 가져옵니다.

예시 시나리오:

run_background_process &
pid_of_background_process=$!
wait $pid_of_background_process
echo "Result code of background process: "$?

답변2

빙고!

pppd에 대한 명령줄 인수로 "nodetach"를 사용하면 데몬이 자체적으로 포크되지 않습니다. 그러면 필요한 것은 스크립트의 다음 줄에 있는 표준 "echo $?"입니다.

pppd call my_provider nodetach maxfail 3
echo $?

관련 정보