亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用springboot對linux進行操控的方法示例

 更新時間:2020年11月24日 11:40:23   作者:kill_clalala  
這篇文章主要介紹了使用springboot對linux進行操控的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1,在pom中導入

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

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


/**
 * 遠程執(zhí)行l(wèi)inux的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
   * 遠程執(zhí)行shll腳本或者命令
   * @param cmd
   *   即將執(zhí)行的命令
   * @return
   *   命令執(zhí)行完后返回的結果值
   * @since V0.1
   */
  public String execute(String cmd){
    String result="";
    try {
      if(login()){
        Session session= conn.openSession();//打開一個會話
        session.execCommand(cmd);//執(zhí)行命令
        result=processStdout(session.getStdout(),DEFAULTCHART);
        //如果為得到標準輸出為空,說明腳本執(zhí)行出錯了
        if(StringUtils.isBlank(result)){
          result=processStdout(session.getStderr(),DEFAULTCHART);
        }
        conn.close();
        session.close();
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
    return result;
  }


  /**
   * @author Ickes
   * 遠程執(zhí)行shll腳本或者命令
   * @param cmd
   *   即將執(zhí)行的命令
   * @return
   *   命令執(zhí)行成功后返回的結果值,如果命令執(zhí)行失敗,返回空字符串,不是null
   * @since V0.1
   */
  public String executeSuccess(String cmd){
    String result="";
    try {
      if(login()){
        Session session= conn.openSession();//打開一個會話
        session.execCommand(cmd);//執(zhí)行命令
        result=processStdout(session.getStdout(),DEFAULTCHART);
        conn.close();
        session.close();
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
    return result;
  }

  /**
   * 解析腳本執(zhí)行返回的結果集
   * @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連接無法自動獲取環(huán)境變量的值,得再執(zhí)行前面加入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操控內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 完美解決java讀取大文件內(nèi)存溢出的問題

    完美解決java讀取大文件內(nèi)存溢出的問題

    下面小編就為大家?guī)硪黄昝澜鉀Qjava讀取大文件內(nèi)存溢出的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Java實現(xiàn)平鋪列表(List)互轉樹形(Tree)結構

    Java實現(xiàn)平鋪列表(List)互轉樹形(Tree)結構

    本文主要介紹了Java實現(xiàn)平鋪列表(List)互轉樹形(Tree)結構,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • 關于springboot集成阿里云短信的問題

    關于springboot集成阿里云短信的問題

    這篇文章主要介紹了springboot集成阿里云短信的方法,本文通過實例代碼圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • 使用Java反射模擬實現(xiàn)Spring的IoC容器的操作

    使用Java反射模擬實現(xiàn)Spring的IoC容器的操作

    這篇文章主要介紹了使用Java反射模擬實現(xiàn)Spring的IoC容器的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • javaweb在線支付功能實現(xiàn)代碼

    javaweb在線支付功能實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了javaweb在線支付功能的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Java中的數(shù)組流ByteArrayOutputStream用法

    Java中的數(shù)組流ByteArrayOutputStream用法

    Java中的ByteArrayOutputStream是java.io包中的一個類,用于在內(nèi)存中創(chuàng)建字節(jié)數(shù)組緩沖區(qū),支持動態(tài)擴展,它繼承自OutputStream,允許以字節(jié)形式寫入數(shù)據(jù),無需與外部設備交互,常用方法包括write()、toByteArray()、toString()等
    2024-09-09
  • java教程散列表和樹所對應容器類及HashMap解決沖突學習

    java教程散列表和樹所對應容器類及HashMap解決沖突學習

    本篇篇文章是java教程,主要介紹了java教程散列表,樹所對應容器類及HashMap解決沖突的學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • MyBatis一對一級聯(lián)更新問題小結

    MyBatis一對一級聯(lián)更新問題小結

    日常工作中經(jīng)常會涉及到一對一級聯(lián)更新的問題,本文主要介紹了MyBatis一對一級聯(lián)更新問題小結,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • RocketMQ?Namesrv架構工作原理詳解

    RocketMQ?Namesrv架構工作原理詳解

    這篇文章主要為大家介紹了RocketMQ?Namesrv架構工作原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 深入探究Java線程的創(chuàng)建與構造方法

    深入探究Java線程的創(chuàng)建與構造方法

    這篇文章主要給大家分享的是java線程的創(chuàng)建以及構造方法,想了解具體方式的小伙伴可以參考下面文章內(nèi)容,希望對你有所幫助
    2022-04-04

最新評論