From b0628cd6949a915596461719d16ba20b59dff73b Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 09 Jul 2025 17:57:26 +0800
Subject: [PATCH] 1

---
 websocketSerivce/src/main/java/org/example/controller/RunController.java |   66 +++++++++++++++++++++++++++++++++
 1 files changed, 66 insertions(+), 0 deletions(-)

diff --git a/websocketSerivce/src/main/java/org/example/controller/RunController.java b/websocketSerivce/src/main/java/org/example/controller/RunController.java
index 649fabd..b63c4f1 100644
--- a/websocketSerivce/src/main/java/org/example/controller/RunController.java
+++ b/websocketSerivce/src/main/java/org/example/controller/RunController.java
@@ -1,6 +1,7 @@
 package org.example.controller;
 
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.example.WsServerApplication;
 import org.example.common.ServerResponse;
 import org.example.pojo.User;
@@ -11,6 +12,10 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
 
 @RestController
 @RequestMapping("/api")
@@ -44,4 +49,65 @@
         return ServerResponse.createBySuccess("重启成功");
     }
 
+
+    @PostMapping("/resetScript")
+    @ResponseBody
+    public ServerResponse resetScript(HttpServletRequest request,@RequestParam("pathName") String pathName) {
+        if(StringUtils.isEmpty(pathName)){
+            return ServerResponse.createByErrorMsg("执行项目不能为空");
+        }
+        String token = request.getHeader("token");
+        User user = JwtUtil.verify(token);
+        if(user.getIsRoot() != 1){
+            return ServerResponse.createByErrorMsg("没有重启权限");
+        }
+        String scriptPath = "/www/wwwroot/sh/"+pathName+".sh";
+        log.info(pathName+"开始重启");
+
+        // 创建 ProcessBuilder 实例
+        ProcessBuilder processBuilder = new ProcessBuilder();
+
+        // 确保脚本具有执行权限
+        File scriptFile = new File(scriptPath);
+        if (!scriptFile.canExecute()) {
+            log.error(pathName+"脚本没有执行权限");
+        }
+
+        // 设置命令,指定 shell 来执行脚本
+        // 假设使用的是 Linux 系统
+        processBuilder.command("/bin/bash", scriptPath);  // 你也可以使用 "/bin/sh" 作为替代
+
+        try {
+            // 启动进程
+            Process process = processBuilder.start();
+
+            // 读取脚本的标准输出
+            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
+            String line;
+            while ((line = reader.readLine()) != null) {
+                log.info(line);
+            }
+
+            // 读取脚本的标准错误输出
+            BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
+            String errorLine;
+            while ((errorLine = errorReader.readLine()) != null) {
+                log.info(errorLine);
+            }
+
+            // 等待脚本执行完毕
+            int exitCode = process.waitFor();
+            log.info(pathName+"脚本执行完毕,退出码:" + exitCode);
+
+            // 如果脚本执行失败,exitCode 可能为非零
+            if (exitCode != 0) {
+                return ServerResponse.createByErrorMsg(pathName+"重启失败");
+            }
+            return ServerResponse.createBySuccess(pathName+"重启成功");
+        } catch (IOException | InterruptedException e) {
+            e.printStackTrace();
+        }
+        return ServerResponse.createByErrorMsg(pathName+"重启失败");
+    }
+
 }

--
Gitblit v1.9.3