java连接linux

来源:互联网 发布:老徐外设店淘宝 编辑:程序博客网 时间:2024/04/27 16:54

1.在java代码中连接linux服务器

 1.1依赖的添加

<dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>2.2</version></dependency><dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.54</version></dependency><dependency>  <groupId>ch.ethz.ganymed</groupId>  <artifactId>ganymed-ssh2</artifactId>  <version>build210</version></dependency>

1.2java代码示例

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import ch.ethz.ssh2.Connection;import ch.ethz.ssh2.Session;import ch.ethz.ssh2.StreamGobbler;public class ExeShell {/** * 执行函数 * @param commands 执行命令 * @param sshInfo 远程连接信息 包括远程地址用户名密码 * @return */public static boolean exeCommand(String[] commands,String[] sshInfo){String sshPort="22";//ssh远程连接的默认端口是22String hostIp=sshInfo[0];String hostName=sshInfo[1];String hostPassword=sshInfo[2];Session sess = null;Connection conn = null;boolean result=false;try {conn = new Connection(hostIp,Integer.valueOf(sshPort));conn.connect();boolean isAuthenticated = conn.authenticateWithPassword(hostName, hostPassword);if (isAuthenticated == false){throw new IOException("Authentication failed. name= " + hostIp);}for (int i = 0; i < commands.length; i++) {sess = conn.openSession();sess.execCommand(commands[i]);result = getResult(sess);if (!result) {return false;}}} catch (IOException e) {e.printStackTrace();return false;} finally {if (sess != null) {sess.close();}if (conn != null) {conn.close();}}return true;}/** * 获取Linux执行以后的信息进行判断 * @param sess * @return * @throws IOException */private static boolean getResult(Session sess) throws IOException{StringBuffer stringBuffer=new StringBuffer();BufferedReader stderrReader = null;BufferedReader stdoutReader = null;try {InputStream stdout = new StreamGobbler(sess.getStdout());InputStream stderr = new StreamGobbler(sess.getStderr());stderrReader = new BufferedReader(new InputStreamReader(stderr, "UTF-8"));stdoutReader = new BufferedReader(new InputStreamReader(stdout, "UTF-8"));char[] arr = new char[512];int read;StringBuilder outmsg = new StringBuilder();while (true) {read = stdoutReader.read(arr, 0, arr.length);if (read < 0) {break;}outmsg.append(new String(arr, 0, read));}System.out.println(outmsg);while (true) {read = stderrReader.read(arr, 0, arr.length);if (read < 0) {break;}stringBuffer.append(new String(arr, 0, read));}System.out.println(stringBuffer);if(stringBuffer.length()>0){return false;}else{return true;}} catch (IOException e) {throw new IOException(e);} finally {if (stderrReader != null) {stderrReader.close();}if (stdoutReader != null) {stdoutReader.close();}}}}



原创粉丝点击