From 274635cd841831dc804f9566e3c496e7f3201f8b Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 27 Nov 2024 17:39:23 +0800
Subject: [PATCH] 1
---
websocketSerivce/src/main/java/org/example/controller/RunController.java | 65 ++++++++++++++++++++++++++++++++
1 files changed, 65 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..a2f228b 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,64 @@
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+"重启失败");
+ }
+ } catch (IOException | InterruptedException e) {
+ e.printStackTrace();
+ }
+ return ServerResponse.createByErrorMsg(pathName+"重启失败");
+ }
+
}
--
Gitblit v1.9.3