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();}}}}
阅读全文
0 0
- JAVA连接Linux
- java连接linux
- linux 下 java 连接 access
- Linux Java连接MySQL数据库
- Linux下java连接sqlserver2005
- Linux Java连接MySQL数据库
- java 运程连接 linux
- java 连接 linux redis 失
- FastDFS-Java客户端连接linux服务器出现连接超时
- linux java连接x window 问题
- linux平台java连接oracle 10g
- Linux下Java连接MySql数据库
- Linux系统Java连接Mysql数据库
- Linux系统Java连接Mysql数据库
- java连接sftp服务+linux配置
- Java通过SSH连接Linux服务器
- linux安装redis,java连接redis
- Java代码实现Telnet连接Linux
- 51单片机 interrupt和 using使用详解
- 自定义toast
- Linux 特殊权限
- [点分树] Codechef December Challenge 2017. Chef, Leonardo And Queries
- Linux下安装Maven和配置环境变量
- java连接linux
- 内存泄漏及解决方法
- HP总裁退休齐纳的忠告 有点长,但是我坚持一口气读完了
- 移动控件位置和多次点击事件的源码实现
- 数据持久化
- 半透明acticity
- 欢迎使用CSDN-markdown编辑器
- 论文阅读-文本匹配(二) 孪生char-BLSTM
- qtcling