function up_soft () { #服务器升级清单地址 upurl="http://www.sunif.cn/upgrade.txt" #从服务端获取待更新的软件清单、先清空可能存在的历史文件 sudo rm -rf /opt/upgrade.txt wget -qO /opt/upgrade.txt $upurl #判断是否成功 if [ -s "/opt/upgrade.txt" ] then #统计服务器上升级的软件数量 unum=$(cat /opt/upgrade.txt | awk -F " " '{print $1}' | wc -l) #比对本机软件与服务器软件版本、跳过第一行的注释信息 for((i=2;i<=$unum;i++));do #循环获取待升级的软件名称 upsoft=$(sed -n "${i}p" /opt/upgrade.txt | awk -F " " '{print $1}') #获取最新的版本、清洗掉字母和特殊字符 upversion=$(sed -n "${i}p" /opt/upgrade.txt | awk -F " " '{print $2}' | tr -cd "[0-9]") #最新的软件版本 upversions=$(sed -n "${i}p" /opt/upgrade.txt | awk -F " " '{print $2}' ) #获取该软件在系统中的版本、清洗掉字母和特殊字符 nowversion=$(dpkg -l | grep $upsoft | awk -F " " '{print $3}' | tr -cd "[0-9]") #对比版本号 if [ $nowversion -lt $upversion ] then echo -e "${YELLOW}正在检测$upsoft,该软件最新版本为$upversions,正在下载软件安装包${RES}" #提取下载地址 downloadurl=$(sed -n "${i}p" /opt/upgrade.txt | awk -F " " '{print $3}') wget -qO /tmp/$upsoft.$upversions.deb $downloadurl #覆盖安装软件包 echo -e "${YELLOW}软件安装包已下载完成、正在安装,请稍等!${RES}" sudo dpkg -i --force-overwrite /tmp/$upsoft.$upversions.deb #完成提示 echo -e "${YELLOW}$upsoft已升级完成${RES}" else echo -e "${YELLOW}正在检测$upsoft,本软件为最新版本,不需要升级。${RES}" fi done else echo -e "${YELLOW}与服务器通信异常、请检查网络并联系系统管理员${RES}" fi }