1. 程式人生 > >java遠端連線linux,執行指令碼命令

java遠端連線linux,執行指令碼命令

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();