1. 程式人生 > 其它 >Java連線Linux

Java連線Linux

匯入maven依賴

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

實現類

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream; import java.io.InputStreamReader; public class test { public static void main(String[] args) throws IOException { String host = "192.168.111.130"; //裝置IP地址 int port = 22; //ssh埠號 String username = "root"; //連線使用者 String password = "123"; //
密碼
// 建立連線 Connection conn = new Connection(host, port); // 啟動連線 conn.connect(); // 驗證使用者密碼 conn.authenticateWithPassword(username, password); Session session = conn.openSession(); session.execCommand("ansible webserver -m shell -a \'w\'"); //
這裡放要在Linux上執行的命令 // 消費所有輸入流 // session.getStdout()輸出的是結果,但是它是以一行的形式輸出,所以傳遞給consumeInputStream進行換行 String inStr = consumeInputStream(session.getStdout()); String errStr = consumeInputStream(session.getStderr()); session.close(); conn.close(); } /** * 消費inputstream,並返回 */ public static String consumeInputStream(InputStream is) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(is)); String s ; StringBuilder sb = new StringBuilder(); while((s=br.readLine())!=null){ System.out.println(s); sb.append(s); } return sb.toString(); } }