OPENWRT自动升级软件的shell脚本

  • Post author:
  • Post category:其他

貌似我有强迫症,每次打开路由器web管理,都必须要看看有没有软件升级,然后一个一个点着升级,或者一连上ssh,都会首先输入opkg update, opkg list-upgradable… 多次这么操作后,觉得挺麻烦,于是,参考搜索的资料,写了个shell脚本,运行一下脚本就会自动检查更新,逐个升级有可用更新的软件,大神略过哈,仅供有同样需要的人参考! 

#!/bin/sh

clr() {
    local ys=31
    while getopts ':c:' OPT; do
        case $OPT in
        c) expr $OPTARG + 10 &>/dev/null && [ $OPTARG -ge 30 ] && [ $OPTARG -le 37 ] && local ys=$OPTARG ;;
        esac
    done
    while read k; do
        echo -e "\e[1;"${ys}"m"${k}"\e[0m"
    done
    return 0
}

opkg update
j=$(opkg list-upgradable | wc -l)
if [ $j -lt 1 ]; then
    echo "There is no application need upgrade on your device..." | clr
    exit 1
else
    echo
    echo "There are ${j} application need upgrade" | clr -c 34
    opkg list-upgradable | clr -c 34
    echo
    read -n1 -t5 -r -p 'Do you want to upgrade now[y/n]?' ssfsj
    case $ssfsj in
    Y | y)
        # 多个选项用竖线分隔,比如上一句可以是 Y | y | S | s )
        sfsj=1
        ;;
    N | n)
        sfsj=0
        ;;
    *)
        sfsj=0
        ;;
    esac
    echo
    if [ $sfsj -eq 1 ]; then
        echo "Now upgrading..." | clr -c 34
        opkg list-upgradable | cut -f 1 -d ' ' | xargs opkg upgrade --force-overwrite
        echo "Total: ${j} application upgrade successful..." | clr -c 34
        exit 0
    else
        echo "User canceled the upgrade..." | clr
        exit 2
    fi
fi

代码如上,保存到一个文本文件(Linux下的),例如appupdate.sh, 然后赋运行权限 chmod +x appupdate.sh, 就可以用 ./appupdate.sh 运行脚本了

 如果想开机运行,可以在 /etc/rc.local里面加一句/root/appupdate.sh(如果你的脚本是在其他路径,自行修改),让脚本开机自动运行。rc.local 里面的代码开机会运行,编辑需谨慎。

 还可以在luci界面,找到系统–计划任务,添加自定义任务,让脚本定时运行。

 编辑计划任务,还可以用命令crontab -e,类似vim的界面,关于计划任务的这个内容格式有点点麻烦,建议度娘弄清楚再编辑。

最后,水平有限,希望对你有一点点参考的意义,莫笑粗浅!


版权声明:本文为coolbi5原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。