网纵论坛

标题: 如何实现流控大师的云端自动更新 [打印本页]

作者: caihongan    时间: 2014-9-12 20:49
标题: 如何实现流控大师的云端自动更新
       流控大师的更新出的还是比较勤快的,但是目前的流控大师版本更新都是手动的。作为网纵的代理来说,手头上的客户太多,每次版本更新的时候工作量也就成了一个不大不小的问题了。
       如何让代理商赚钱是销售思考的问题,如何让诸位代理商更好的部署流控、维护流控、使用流控就是技术思考的问题了。今天在这里我给大家带来了一种可能性——降低版本更新迭代带来的工作量,实现流控大师的云端自动更新。
      
       这是一个DIY的方案,所以需要自己准备一台专用或者兼职的云端服务器,通过HTTP服务器提供流控更新包的下发。
      
测试环境:
       流控大师标准版8.0    IP:192.168.5.1
       HTTP分发服务器(云端)    IP:192.168.5.68   http服务用软件hfs提供

       HTTP分发内容包含2个文件:流控大师更新包、更新包的md5值
       我的测试环境下:http://192.168.5.68/8.0/update.tar.gz     8.0标准版的更新包(8.1和路由版同样可参考本例)
                                http://192.168.5.68/8.0/md5.txt           这个更新包的md5(如果服务器端有多个版本,脚本里要对应成不同文件名)
      
       md5.txt的格式如下(字母全小写,=两边有空格,此文件用来校验更新包的完整性):


  1. md5 = 4a1f61526137ad372a1c2248d8eb42dc
复制代码
(因Windows下的MD5工具生成的MD5主要是大写,为了方便大家,帖子最下方的附件有网页大小写转换小工具和简单WEB服务器HFS,以便大家使用)



       更新通过shell脚本完成,自动更新则可以通过计划任务来调度该shell脚本实现(运行周期建议为1个月或者半个月)。
       shell脚本内容如下(其中的http://192.168.5.68/8.0/update.tar.gz和http://192.168.5.68/8.0/md5.txt  请替换为自己的):
  1. #!/bin/sh
  2. # copyright @ Cai Qingrun  &&  Cai Hongan
  3. # envionment variables
  4. RAMDISK="/usr/ramdisk"
  5. PGPATH="/usr/panabit"
  6. DATAPATH="/usr/panalog"
  7. # disk space
  8. rm -f ${RAMDISK}/tmp/*
  9. rm -rf ${RAMDISK}/sysupgrade
  10. mkdir ${RAMDISK}/sysupgrade
  11. # download package
  12. fetch -o ${RAMDISK}/tmp/update.tar.gz http://192.168.5.68/8.0/update.tar.gz
  13. #check file_package
  14. updatep=${RAMDISK}/tmp/update.tar.gz
  15. if [ ! -f ${updatep} ]; then
  16.         echo "file not exist"
  17.         exit 0
  18. fi
  19. echo "Package file is OK"
  20. # download file_md5
  21. fetch -o ${RAMDISK}/tmp/md5.sig http://192.168.5.68/8.0/md5.txt
  22. #check md5
  23. hashf=${RAMDISK}/tmp/md5.sig
  24. if [ ! -f ${hashf} ]; then
  25.         echo "file not exist"
  26.         exit 0
  27. fi
  28. echo "Md5 file is OK"
  29. # check package
  30. md5 ${RAMDISK}/tmp/update.tar.gz > ${RAMDISK}/tmp/package.sig
  31. filesig=${RAMDISK}/tmp/package.sig
  32. downsig=${RAMDISK}/tmp/md5.sig
  33. filecomp="`awk -F' = ' '{print $2}' ${filesig}`"
  34. netcomp="`awk -F' = ' '{print $2}' ${downsig}`"
  35. if [ "${filecomp}" != "${netcomp}" ]; then
  36.         echo "Warning:Package is incomplete. "
  37.         exit 0;
  38. fi
  39. echo "Package is complete,continue to update!"
  40. # unzip package
  41. tar xzvf ${RAMDISK}/tmp/update.tar.gz -C ${RAMDISK}/sysupgrade
  42. # envionment variables
  43. kerneldir=`find ${RAMDISK}/sysupgrade -name kernel`
  44. pkgroot=`dirname ${kerneldir}`
  45. #check version
  46. localversionfile="/usr/panabit/etc/version"
  47. updateversionfile="${pkgroot}/etc/version"
  48. localversion=`cat ${localversionfile}`
  49. echo "localversion = ${localversion}"
  50. updateversion=`cat ${updateversionfile}`
  51. echo "updateverion  = ${updateversion}"
  52. if [ "${localversion}" = "${updateversion}" ]; then
  53.         echo "There is no newer version."
  54.         exit 0;
  55. fi
  56. echo "New version is ready,continue to update"
  57. # upgrade itm
  58. cp -f ${PGPATH}/admin/.htpasswd ${DATAPATH}/.htpasswd
  59. cp -Rf ${pkgroot}/* ${PGPATH}/
  60. cp -f ${DATAPATH}/.htpasswd ${PGPATH}/admin/.htpasswd
  61. rm -f ${DATAPATH}/.htpasswd
  62. # upgrade kernel part
  63. cp -f ${kerneldir}/*.ko /boot/kernel/
  64. sync
  65. sync
  66. rm -rf ${RAMDISK}/sysupgrade/*
  67. # Copy to ramdisk
  68. cp -Rf ${PGPATH}/* ${RAMDISK}/
  69. #clean
  70. rm -f ${RAMDISK}/tmp/*
  71. rm -rf ${RAMDISK}/sysupgrade
  72. # restart service
  73. ${RAMDISK}/bin/ipectrl stop;${RAMDISK}/bin/ipectrl start
复制代码




              流控大师ssh终端下创建更新脚本upgrade.sh:
              1、进入运行目录
  1. cd /root
复制代码

              2、创建upgrade.sh文件
  1. touch upgrade.sh
复制代码

           3、编辑upgrade.sh,把上面的脚本内容加入进来
  1. ee upgrade.sh
复制代码
              
               4、赋予脚本upgrade.sh可执行权限
  1. chmod +x upgrade.sh
复制代码






               通过计划任务实现在每个月1号的早上9:00自动更新流控大师:
               1、编辑crontab计划任务
  1. ee /etc/crontab
复制代码

               2、格式:分钟  小时   日  月  周几   执行用户   执行的指令或者文件
                注意:周几的星期日数值对应为7
  1. 0 9 1 * * root /root/upgrade.sh
复制代码





本方案和相关脚本由网纵--庆润 、网纵--蔡宏安共同完成,鼓掌!!!







大小写转换.rar

519 Bytes, 下载次数: 11731

hfs.rar

708.73 KB, 下载次数: 11979


作者: m3xxf    时间: 2014-9-12 20:50
学习了
作者: lixcxc96    时间: 2014-10-21 00:00
8.1的版本 好久可以支持呀?
作者: caihongan    时间: 2014-10-22 17:11
lixcxc96 发表于 2014-10-21 00:00
8.1的版本 好久可以支持呀?

这个是自己进行diy的,我以8.0为例而已
8.1和路由版自然也可以按照这个来做的
作者: chenxu253    时间: 2015-6-14 01:27
脚本手动执行没有问题,crontab里面自动执行不了。网上查了下资料,可能是环境变量的问题,希望测试解决下
作者: 呦呦妹子36    时间: 2017-7-17 07:21
呦呦资源论坛开放注册了!!限时开放注册

iujlb.com




欢迎光临 网纵论坛 (http://v.netzone.com/) Powered by Discuz! X3.2