返回顶部
首页 > 资讯 > 操作系统 >使用springboot对linux进行操控的方法示例
  • 172
分享到

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

springbootlinux操控springbootlinux 2022-06-03 14:06:30 172人浏览 安东尼
摘要

1,在pom中导入 <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganyme

1,在pom中导入


 <dependency>
  <groupId>ch.ethz.ganymed</groupId>
  <artifactId>ganymed-ssh2</artifactId>
  <version>build210</version>
 </dependency>

2,编写工具


package org.jeecg.modules.system.util;




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.*;



@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;


  
  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;
  }
  
  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;
  }


  
  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;
  }

  
  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="$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

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

--结束END--

本文标题: 使用springboot对linux进行操控的方法示例

本文链接: https://lsjlt.com/news/11602.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 使用springboot对linux进行操控的方法示例
    1,在pom中导入 <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganyme...
    99+
    2022-06-03
    springboot linux操控 springboot linux
  • SpringBoot 进行限流的操作方法
    目录为什么要进行限流?什么是限流?有哪些限流算法?1. 计数器限流2. 漏桶算法3. 令牌桶算法基于Guava工具类实现限流基于AOP实现接口限流小结大家好,我是飘渺。SpringB...
    99+
    2024-04-02
  • SpringBoot使用Flyway进行数据库管理的操作方法
    目录一、Flyway简介二、SpringBoot集成使用1.pom.xml引入依赖2.application.properties3.resources创建db数据库脚本文件夹4.启...
    99+
    2024-04-02
  • 在springboot中对kafka进行读写的示例代码
    springboot对kafka的client很好的实现了集成,使用非常方便,本文也实现了一个在springboot中实现操作kafka的demo。1.POM配置只需要在dependencies中增加 spring-kafka的配置即可。完...
    99+
    2023-05-31
    springboot kafka 中对
  • SpringBoot使用注解进行分页的实现示例
    目录依赖安装添加公共返回实体类普通实体类 AjaxResult分页实体类 PageResult注解处理分页注解 Pagination使用AOP进行分页使用注解编写Controller...
    99+
    2024-04-02
  • SpringBoot使用prometheus监控的示例代码
    目录1.关于Prometheus2.有关Grafana3.SpringBoot使用Prometheus3.1 依赖内容3.2 配置文件3.3 设置application4.Prome...
    99+
    2024-04-02
  • SpringBoot中使用多线程的方法示例
    一、介绍 Spring是通过任务执行器(TaskExecutor)来实现多线程和并发编程,使用Spring提供的ThreadPoolTaskExecutor来创建一个基于线城池的T...
    99+
    2024-04-02
  • linux查看进程的示例方法
    这篇“linux查看进程的示例方法”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“linux查看进程的示例方法”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们...
    99+
    2023-06-06
  • SpringBoot实现Mysql使用MD5进行密码加密的示例
    项目开发中为了保护用户隐私安全,一般都会用MD5进行密码加密 以下就简单举例SpringBoot 实现Mysql使用MD5进行密码加密做一个简单的例子 看下数据库,这边简单做了用户表...
    99+
    2024-04-02
  • SpringBoot集成Druid连接池进行SQL监控的示例分析
    这篇文章主要为大家展示了“SpringBoot集成Druid连接池进行SQL监控的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringBoot集成Druid连接池进行SQL监控的示...
    99+
    2023-06-20
  • Vue3中使用ref标签对组件进行操作方法
    目录Vue3使用ref标签补充:Vue3 中 ref 标记组件使用父组件子组件Vue3使用ref标签 在Vue2中 一般用 this.$ref.xxxx 进行获取组件对象Vue3中就...
    99+
    2023-05-16
    Vue3使用ref标签 Vue3  ref 标记组件
  • Springboot使用filter对response内容进行加密方式
    目录使用filter对response内容进行加密编写加密类(AES)编写Filter类写配置类Springboot数据加密传输创建加解密注解注解创建request解密类创建resp...
    99+
    2024-04-02
  • Vue中使用jsencrypt进行RSA非对称加密的操作方法
    在线生成生成RSA密钥对:http://web.chacuo.net/netrsakeypair 下载jsencrypt cnpm i -S jsencrypt 引入 import...
    99+
    2024-04-02
  • Python使用psutil库对系统数据进行采集监控的方法
    大家好,我是辰哥~ 今天给大家介绍一个可以获取当前系统信息的库——psutil 利用psutil库可以获取系统的一些信息,如cpu,内存等使用率,从而可以查看当前系统的使用情况,实时采集这些信息可以达到实时监控系统的...
    99+
    2022-06-03
    Python psutil系统监控 Python使用psutil库
  • 怎么在PHP中使用fread()方法对字节进行操作
    怎么在PHP中使用fread()方法对字节进行操作?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。...
    99+
    2023-06-14
  • linux进入redis命令行操作的方法
    这篇文章主要介绍了linux进入redis命令行操作的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。1、先进入redis目录,将redis安...
    99+
    2024-04-02
  • 在SpringBoot项目中的使用Swagger的方法示例
    目录一. 首先Swagger是什么?Swagger的主见介绍:二. Swagger UI的使用:三. Swagger整合SpringBoot1. Pom依赖:2. 配置类:3...
    99+
    2024-04-02
  • 如何进行对Python操作方法的说明
    今天就跟大家聊聊有关如何进行对Python操作方法的说明,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍...
    99+
    2023-06-17
  • Android使用KeyStore对数据进行加密的示例代码
    谈到 Android 安全性话题,Android Developers 官方网站给出了许多很好的建议和讲解,涵盖了存储数据、权限、网络、处理凭据、输入验证、处理用户数据、加密等...
    99+
    2022-06-06
    加密 keystore 示例 数据 Android
  • Linux中使用wget进行下载的方法
    本篇内容主要讲解“Linux中使用wget进行下载的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中使用wget进行下载的方法”吧!使用举例:1、下载单个文件代码如下:$ wget...
    99+
    2023-06-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作