Browse Source

添加 SSH 客户端

reghao 5 years ago
parent
commit
71dfabefd8

+ 32 - 33
dmaster/pom.xml

@@ -23,6 +23,11 @@
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-security</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
@@ -34,6 +39,11 @@
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-cache</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-mongodb</artifactId>
@@ -44,6 +54,11 @@
             <artifactId>spring-boot-starter-data-jpa</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.github.ben-manes.caffeine</groupId>
+            <artifactId>caffeine</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
@@ -56,15 +71,15 @@
         </dependency>
 
         <dependency>
-            <groupId>org.tmatesoft.svnkit</groupId>
-            <artifactId>svnkit</artifactId>
-            <version>1.10.1</version>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.9.2</version>
         </dependency>
 
         <dependency>
-            <groupId>org.eclipse.jgit</groupId>
-            <artifactId>org.eclipse.jgit</artifactId>
-            <version>5.5.0.201909110433-r</version>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.9.2</version>
         </dependency>
 
         <dependency>
@@ -74,43 +89,27 @@
         </dependency>
 
         <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-cache</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-security</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.github.ben-manes.caffeine</groupId>
-            <artifactId>caffeine</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger2</artifactId>
-            <version>2.9.2</version>
+            <groupId>org.apache.maven.shared</groupId>
+            <artifactId>maven-invoker</artifactId>
+            <version>3.0.1</version>
         </dependency>
 
         <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger-ui</artifactId>
-            <version>2.9.2</version>
+            <groupId>org.tmatesoft.svnkit</groupId>
+            <artifactId>svnkit</artifactId>
+            <version>1.10.1</version>
         </dependency>
 
         <dependency>
-            <groupId>org.apache.maven.shared</groupId>
-            <artifactId>maven-invoker</artifactId>
-            <version>3.0.1</version>
+            <groupId>org.eclipse.jgit</groupId>
+            <artifactId>org.eclipse.jgit</artifactId>
+            <version>5.5.0.201909110433-r</version>
         </dependency>
-
-        <dependency>
+        <!--<dependency>
             <groupId>com.jcraft</groupId>
             <artifactId>jsch</artifactId>
             <version>0.1.55</version>
-        </dependency>
+        </dependency>-->
 
         <dependency>
             <groupId>io.jsonwebtoken</groupId>

+ 42 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/common/utils/sshc/MyUserInfo.java

@@ -0,0 +1,42 @@
+package cn.reghao.autodop.dmaster.common.utils.sshc;
+
+import com.jcraft.jsch.UserInfo;
+
+/**
+ * @author reghao
+ * @date 2020-11-12 23:58:58
+ */
+public class MyUserInfo implements UserInfo {
+    @Override
+    public String getPassphrase() {
+        return null;
+    }
+
+    @Override
+    public String getPassword() {
+        return "gsh";
+    }
+
+    @Override
+    public boolean promptPassword(String message) {
+        System.out.println("promptPassword -> " + message);
+        return false;
+    }
+
+    @Override
+    public boolean promptPassphrase(String message) {
+        System.out.println("promptPassphrase -> " + message);
+        return false;
+    }
+
+    @Override
+    public boolean promptYesNo(String message) {
+        System.out.println("promptYesNo -> " + message);
+        return true;
+    }
+
+    @Override
+    public void showMessage(String message) {
+        System.out.println("showMessage -> " + message);
+    }
+}

+ 76 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/common/utils/sshc/SshClient.java

@@ -0,0 +1,76 @@
+package cn.reghao.autodop.dmaster.common.utils.sshc;
+
+import com.jcraft.jsch.*;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.Properties;
+
+/**
+ * @author reghao
+ * @date 2020-11-12 23:49:39
+ */
+public class SshClient {
+    private String host;
+    private int port;
+    private String username;
+    private String password;
+
+    public SshClient(String host, String username, String password) {
+        this.host = host;
+        this.port = 22;
+        this.username = username;
+        this.password = password;
+    }
+
+    public String execRemote(String cmd) {
+        JSch jsch = new JSch();
+        UserInfo userInfo = new MyUserInfo();
+        try {
+            Session session = jsch.getSession(username, host, port);
+            session.setPassword(password);
+            session.setUserInfo(userInfo);
+            Properties properties = new Properties();
+            properties.put("StrictHostKeyChecking", "no");
+            session.setConfig(properties);
+            session.connect();
+
+            ChannelExec execChannel = (ChannelExec) session.openChannel("exec");
+            execChannel.setInputStream(null);
+
+            BufferedReader reader = new BufferedReader(new InputStreamReader(execChannel.getInputStream()));
+            execChannel.connect();
+
+            StringBuilder sb = new StringBuilder();
+            String line;
+            while ((line = reader.readLine()) != null) {
+                sb.append(line).append(System.lineSeparator());
+            }
+            reader.close();
+
+            int exitCode = 0;
+            if (execChannel.isClosed()) {
+                exitCode = execChannel.getExitStatus();
+            }
+
+            execChannel.disconnect();
+            session.disconnect();
+
+            return sb.toString();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static void main(String[] args) {
+        String host = "192.168.0.169";
+        String username = "root";
+        String password = "gsh";
+
+        String cmd = "ls -lh";
+        SshClient sshClient = new SshClient(host, username, password);
+        String result = sshClient.execRemote(cmd);
+        System.out.println();
+    }
+}