找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 640|回复: 5

OPENWRT自动升级软件的shell脚本

[复制链接]
发表于 2022-10-19 09:25 | 显示全部楼层 |阅读模式
本帖最后由 null666666 于 2023-3-16 13:06 编辑



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


  1. #!/bin/sh

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

  14. opkg update
  15. j=$(opkg list-upgradable | wc -l)
  16. if [ $j -lt 1 ]; then
  17.     echo "There is no application need upgrade on your device..." | clr
  18.     exit 1
  19. else
  20.     echo
  21.     echo "There are ${j} application need upgrade" | clr -c 34
  22.     opkg list-upgradable | clr -c 34
  23.     echo
  24.     read -n1 -t5 -r -p 'Do you want to upgrade now[y/n]?' ssfsj
  25.     case $ssfsj in
  26.     Y | y)
  27.         # 多个选项用竖线分隔,比如上一句可以是 Y | y | S | s )
  28.         sfsj=1
  29.         ;;
  30.     N | n)
  31.         sfsj=0
  32.         ;;
  33.     *)
  34.         sfsj=0
  35.         ;;
  36.     esac
  37.     echo
  38.     if [ $sfsj -eq 1 ]; then
  39.         echo "Now upgrading..." | clr -c 34
  40.         opkg list-upgradable | cut -f 1 -d ' ' | xargs opkg upgrade --force-overwrite
  41.         echo "Total: ${j} application upgrade successful..." | clr -c 34
  42.         exit 0
  43.     else
  44.         echo "User canceled the upgrade..." | clr
  45.         exit 2
  46.     fi
  47. fi

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

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

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

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

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



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 1恩山币 +1 收起 理由
picc745514 + 1 总一天,你会发现,点了升级,路由器就出毛.

查看全部评分

只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2022-10-19 10:58 | 显示全部楼层
再在“软件包”luci上加个按钮“一键升级”就更好了。我是用不着,我自己的有些包比它官方的还新。

点评

我一会儿试试  详情 回复 发表于 2022-10-19 11:34
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-10-19 11:30 来自手机 | 显示全部楼层
在openwrt上是比较危险的行为
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-19 11:34 | 显示全部楼层
wulishui 发表于 2022-10-19 10:58
再在“软件包”luci上加个按钮“一键升级”就更好了。我是用不着,我自己的有些包比它官方的还新。

我一会儿试试
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-10-19 12:56 | 显示全部楼层
貌似我有强迫症,每次打开路由器web管理,都必须要看看有没有软件升级,然后一个一个点着升级


说明你运气不错,等你这么干久了,升级某个程序后路由出BUG,直至死循环无法开机,强迫症就会消失了

点评

怕啥,配置文件,app列表,shell 文件都同步在挂载的u盘上的,uboot重刷就可以了呀,这玩意儿不就是为了折腾么  详情 回复 发表于 2022-10-19 14:04
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-19 14:04 | 显示全部楼层
avin4 发表于 2022-10-19 12:56
说明你运气不错,等你这么干久了,升级某个程序后路由出BUG,直至死循环无法开机,强迫症就会消失了

怕啥,配置文件,app列表,shell 文件都同步在挂载的u盘上的,uboot重刷就可以了呀,这玩意儿不就是为了折腾么
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-9-28 13:59

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表