|
|
@@ -0,0 +1,84 @@
|
|
|
+/**
|
|
|
+* @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"
|
|
|
+ "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
|
|
|
+ }
|
|
|
+ IsUpdateing = true
|
|
|
+ defer func() {
|
|
|
+ IsUpdateing = false
|
|
|
+ }()
|
|
|
+
|
|
|
+ if createsh() {
|
|
|
+ c.String(http.StatusOK, "正在执行update.sh, 升级会保留原有的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 &"
|
|
|
+
|
|
|
+ // 创建文件
|
|
|
+ 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
|
|
|
+}
|