获取 pppd 退出代码 - 如何获取?

获取 pppd 退出代码 - 如何获取?

我正在 Raspberry Pi 系统上设计一些报告系统,该系统通过由 控制的 3G USB 调制解调器连接到世界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

答对了!

将“nodetach”作为 pppd 的命令行参数,守护进程将不会分叉自身。那么所需要的就是标准的“echo $?”在脚本的下一行:

pppd call my_provider nodetach maxfail 3
echo $?

相关内容