• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

使用springboot对linux进行操控的方法示例

springboot 搞代码 4年前 (2022-01-05) 27次浏览 已收录 0个评论

这篇文章主要介绍了使用springboot对linux进行操控的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1,在pom中导入

  ch.ethz.ganymedganymed-ssh2build210

2,编写工具类

 package org.jeecg.modules.system.util; /** * @Description: * @Author: LGX * @Date: 2020/11/19 10:36 */ import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.Session; import ch.ethz.ssh2.StreamGobbler; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.*; /** * 远程执行linux的shell script * @author Ickes * @since V0.1 */ @Data @NoArgsConstructor @AllArgsConstructor @Slf4j @Component public class RemoteExecuteCommandutil { //字符编码默认是utf-8 private static String DEFAULTCHART="UTF-8"; private Connection conn; @Value(value = "${jeecg.linux.ip}") public String ip; @Value(value = "${jeecg.linux.userName}") public String userName; @Value(value = "${jeecg.linux.userPwd}") public String userPwd; /** * 远程登录linux的主机 * @author Ickes * @since V0.1 * @return *   登录成功返回true,否则返回false */ public Boolean login(){ boolean flg=false; try { conn = new Connection(ip); conn.connect();//连接 flg=conn.authenticateWithPassword(userName, userPwd);//认证 } catch (IOException e) { e.printStackTrace(); } return flg; } /** * @author Ickes * 远程执行shll脚本或者命令 * @param cmd *   即将执行的命令 * @return *   命令执行完后返回的结果值 * @since V0.1 */ public String execute(String cmd){ String result=""; try { if(login()){ Session session= conn.openSession();//打开一个会话 session.execCommand(cmd);//执行命令 result=processStdout(session.getStdout(),DEFAULTCHART); //如果为得到标准输出为空,说明脚本执行出错了 if(StringUtils.isBlank(result)){ result=processStdout(session.getStderr(),DEFAULTCHART); } conn.close(); session.close(); } } catch (IOException e) { e.printStackTrace(); } return result; } /** * @author Ickes * 远程执行shll脚本或者命令 * @param cmd *   即将执行的命令 * @return *   命令执行成功后返回的结果值,如果命令执行失败,返回空字符串,不是null * @since V0.1 */ public String executeSuccess(String cmd){ String result=""; try { if(login()){ Session session= conn.openSession();//打开一个会话 session.execCommand(cmd);//执行命令 result=processStdout(session.getStdout(),DEFAULTCHART); conn.close(); session.close(); } } catch (IOException e) { e.printStackTrace(); } return result; } /** * 解析脚本执行返回的结果集 * @author Ickes * @param in 输入流对象 * @param charset 编码 * @since V0.1 * @return *    以纯文本的格式返回 */ private String processStdout(InputStream in, String charset){ InputStream  stdout = new StreamGobbler(in); StringBuffer buffer = new StringBuffer();; try { BufferedReader br = new BufferedReader(new InputStreamReader(stdout,charset)); String line=null; while((line=br.readLine()) != null){ buffer.append(line+"\n"); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return buffer.toString(); } }

3,yml里编写配置信息

 jeecg : linux: ip: 192.168.xxx.xxx userName: root userPwd: 123456

4,注入工具类,编写命令

 @Autowired private RemoteExecuteCommandutil Commandutil; @GetMapping(value = "/training") public String training(@RequestParam(name="cmd") String cmd){ // String a = "sh /opt/shops/test1.sh 1 3"; //命令返回的信息 String cmdInformation =Commandutil.execute("source /etc/profile;"+cmd); return cmdInformation; } 

由于ssh连接无法自动获取环境变量的值,得再执行前面加入source /etc/profile;来手动识别,如果还是不行可以在/etc/profile末尾加入export PATH=来源gaodai#ma#com搞*!代#%^码$网“$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games”

到此这篇关于使用springboot对linux进行操控的方法示例的文章就介绍到这了,更多相关springboot linux操控内容请搜索gaodaima搞代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持gaodaima搞代码网

以上就是使用springboot对linux进行操控的方法示例的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用springboot对linux进行操控的方法示例

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址