| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- /**
- * @Author: zou.yingbin
- * @Create : 2021/10/20 15:20
- * @Modify : 2021/10/20 15:20
- * @Note : 生成用于内网升级的.sh脚本
- */
- package other
- import (
- "github.com/gin-gonic/gin"
- "mtp2_if/logger"
- "net/http"
- "os"
- "os/exec"
- "path/filepath"
- "runtime"
- "strings"
- )
- var IsUpdateing = false
- // MakeUpdateScript 生成脚本
- func MakeUpdateScript(c *gin.Context) {
- if IsUpdateing {
- c.String(http.StatusOK, "正在升级中...")
- return
- }
- if runtime.GOOS == "windows" {
- c.String(http.StatusOK, "windows不支持, 仅支持linux下执行")
- return
- }
- logger.GetLogger().Debug("*********************auto update*******************************")
- IsUpdateing = true
- defer func() {
- IsUpdateing = false
- }()
- if createsh() {
- c.String(http.StatusOK, "正在执行升级, 升级会保留原有的config.xml和cfg.json,且重启服务。稍后请在日志页面查看版本信息, 请勿刷新本页面。")
- _ = exec.Command("sh", "./update.sh").Run()
- } else {
- c.String(http.StatusBadRequest, "创建脚本失败, 可能是权限不足")
- }
- }
- // 生成update.sh文件
- func createsh() bool {
- dir := ""
- if str, err := filepath.Abs(filepath.Dir(os.Args[0])); err == nil {
- dir = strings.Replace(str, "\\", "/", -1)
- } else {
- return false
- }
- sh :=
- "# author : zyb\n" +
- "# note : 在程序运行目录执行此脚本, 升级go服务到最新构建的版本。升级完成自动重启go服务\n" +
- "# --------------------------------------------------------------------\n" +
- "\n" +
- "mkdir -p upmtpgo\n" +
- "cd upmtpgo\n" +
- "rm -f console\n" +
- "wget -c http://192.168.30.153:8080/view/mtp2.0_release/job/mtp2.0_QueryService_linux/label=192.168.31.56/lastBuild/console\n" +
- "filename=`grep -o -w -m1 mtp2.*zip console`\n" +
- "wget -c http://192.168.30.153/share/build/mtp2.0_release/$filename\n" +
- "rm -rf queryservice\n" +
- "unzip $filename -d queryservice\n" +
- "cp ../config/config.xml ./queryservice/config/config.xml\n" +
- "cp ../config/cfg.json ./queryservice/config/cfg.json\n" +
- "cp -rf ./queryservice/* ../\n" +
- "cd ..\n" +
- "rm -rf upmtpgo\n" +
- "pkill QueryService\n" +
- "nohup `pwd`/QueryService &" +
- "rm -f update.sh"
- // 创建文件
- if f, err := os.OpenFile(dir+"/update.sh", os.O_RDWR|os.O_CREATE, 0666); err == nil {
- _, err = f.Write([]byte(sh))
- f.Close()
- } else {
- return false
- }
- return true
- }
|