RK3568-linux升级用户程序

脚本如下

复制代码
#!/bin/bash

# 目标 URL 与保存目录----------------------------------------------下方内容用户根据实际需求修改----------------------------------------------------------------------
BASE_URL="http://172.20.2.55:80"    #远程服务器目录
DEST_DIR="/userdata"				#用户程序下载后暂存路径/userdata目录下
TARGET_FILE="a"						#存放用户程序
MD5_FILE="md5sum.txt"				#存放用户程序md5sum校验值
USER_DIR="/root"                    #用户实际存放路径

# 创建目录(如果不存在)--------------------------------------------下方内容用户不用修改,或根据需求修改----------------------------------------------------------------------
mkdir -p "$DEST_DIR"

# 进入目录
cd "$DEST_DIR" || exit 1

# 下载远程服务器md5sum.txt文件
wget -q "${BASE_URL}/${MD5_FILE}" -O "${MD5_FILE}"
# 读取 md5sum.txt 中的值是否与本地可执行程序 md5校验值一致
EXPECTED_MD5=$(cat "$MD5_FILE")
ACTUAL_MD5=$(md5sum /${USER_DIR}/${TARGET_FILE} | cut -c 1-32)
# md5值一致直接退出
if [ "$EXPECTED_MD5" == "$ACTUAL_MD5" ]; then
    echo "远程服务器与本地文件一致,无需升级"
    exit 1
fi

# md5值不一致下载远程服务器可执行程序
wget -q "${BASE_URL}/${TARGET_FILE}" -O "${TARGET_FILE}"
# 检查是否下载成功
if [ ! -f "$TARGET_FILE" ] || [ ! -f "$MD5_FILE" ]; then
    echo "下载失败,文件不存在。"
    rm -f "$TARGET_FILE" "$MD5_FILE"
    exit 1
fi


# 比较 md5
ACTUAL_MD5=$(md5sum "$TARGET_FILE" | cut -c 1-32)
if [ "$EXPECTED_MD5" == "$ACTUAL_MD5" ]; then
    echo "MD5 校验成功,备份 USER_DIR/TARGET_FILE  到 USER_DIR/TARGET_FILE.bak"
    mv /${USER_DIR}/$TARGET_FILE /${USER_DIR}/${TARGET_FILE}.bak
    echo "MD5 校验成功,拷贝 TARGET_FILE/TARGET_FILE  到 USER_DIR"
    cp -f "$TARGET_FILE" /${USER_DIR}/
    chmod +x /${USER_DIR}/"$TARGET_FILE"
    echo "delete download file"
    rm -f "$TARGET_FILE" "$MD5_FILE"
    echo "reboot system"
    sync
    sleep 5
    reboot
else
    echo "MD5 校验失败,删除下载文件。"
    rm -f "$TARGET_FILE" "$MD5_FILE"
    exit 1
fi

exit 0

测试服务器搭建自行百度

搭建完成后存放用户程序a和md5sum.txt

相关推荐
予枫的编程笔记2 分钟前
【Linux进阶篇】Linux网络配置+端口监听实战:ip/ss/iptables常用命令一次吃透
linux·iptables·网络配置·curl·端口监听·ping·ss命令
礼拜天没时间.9 分钟前
深入Docker架构——C/S模式解析
linux·docker·容器·架构·centos
醉风塘17 分钟前
Linux进程管理:深度解析ps -ef命令及其高级应用
linux·运维·服务器
不做无法实现的梦~18 分钟前
PX4各个模块的作用(3)
linux·stm32·嵌入式硬件·机器人·自动驾驶
不爱缺氧i27 分钟前
ubuntu离线安装mariadb
linux·ubuntu·mariadb
疯狂敲代码的老刘39 分钟前
JDK 1.6到25 全版本网盘合集 (Windows + Mac + Linux)
java·linux·windows·macos·jdk
爆米花byh43 分钟前
在RockyLinux9环境的Storm2.8.3单机版安装
linux·中间件·storm
纤纡.44 分钟前
Linux 下 MySQL 数据类型与约束:第三章核心表格归纳与实战应用
linux·mysql
陈桴浮海1 小时前
【Linux&Ansible】学习笔记合集三
linux·运维·云原生·ansible
yuanmenghao1 小时前
Linux 性能实战 | 第 10 篇 CPU 缓存与内存访问延迟
linux·服务器·缓存·性能优化·自动驾驶·unix