在启动时将 Openwrt 脚本重新连接到 运行 并继续检查当前状态

Make reconnect Openwrt script to run in boot and keep checking for current status

我有这个在 openwrt 中工作得很好:

#!/bin/sh
#set -x #debug
while true; do
  wget -O /tmp/extip 'http://ifconfig.me/ip' 2>/dev/null
  EXT_IP=$(cat /tmp/extip)
  INT_IP="$(ip addr show dev wwan0 | grep "inet\b" | awk '{print }' | cut -d/ -f1)"
  ROOTER=/usr/lib/rooter
  [ -z $EXT_IP ] && continue
  if [ $(echo "$INT_IP" | grep "$EXT_IP" -q; echo $?) -eq 1 ]; then
    /sbin/ifup wan1
    $ROOTER/pwrtoggle.sh 1
    echo "NAT-DETECT: External ($EXT_IP) does not match Internal ($INT_IP); Reconnecting WAN1..." > /dev/kmsg
    /etc/init.d/firewall restart
    /etc/init.d/miniupnpd restart
  fi
  sleep 30
done
#set +x #debug

如何在启动时(或一段时间后)制作此脚本 运行 并让它 运行 在后台永远检查当前 IP 状态并执行其工作?此外,使用 "sleep" 的初始化脚本看起来也不好,因为它被认为是错误的形式。此脚本的优化形式是什么以符合我的目的?

提前致谢!

我在我的 OpenWRT 上安装了 GNU 屏幕,在 /etc/rc.local 我有这样的东西:

# start screen in detached mode
screen -dm -S boot -c /dev/null bash /root/bin/monitor.sh 

它将在后台 运行。您也可以在登录后使用 screen -r boot 附加到它。

如果对你有用,你可以试试。