java遠端連線linux,執行指令碼命令
阿新 • • 發佈:2018-12-11
1.maven的POM.xml需要配置包
<dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <version>262</version> </dependency>
2.直接上程式碼
package maven; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.Session; import ch.ethz.ssh2.StreamGobbler; public class RemoteShellTool { /** * @param args */ public static void main(String[] args) throws Exception{ List<String> result=new ArrayList<String>(); Connection connection = new Connection("IP"); connection.connect();//連線 connection.authenticateWithPassword("username","password");//認證 Session session=connection.openSession(); session.execCommand("/opt/cloudera/parcels/CDH/bin/hdfs dfs -ls /"); InputStream is = new StreamGobbler(session.getStdout());//獲得標準輸出流 BufferedReader brs = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); String temp = ""; while ((temp=brs.readLine()) != null) { String[] a = temp.split("\\s+"); if(a.length > 7 ){ result.add(a[a.length-1]); } } System.out.println(result); if (session != null) { session.close(); } session.close(); brs.close(); } }
將IP換成自己的IP地址,使用者名稱密碼修改為自己的。
3.當我們執行多個指令碼的時候,會出現有一個指令碼正在執行的錯誤,這時候我們需要執行多個Session session=connection.openSession();