Java連線Linux
阿新 • • 發佈:2022-02-22
匯入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(); } }