远程连接linux执行命并且返回执行结果
2016-01-21 16:25
330 查看
前两天用了使用过一次远程连接执行命令的方法,并且可以通过流的方式 将执行结果读取回来
在这里记录一下这个工具类
依赖包 jsch-0.1.48.jar
这个方法具有一定局限性,每次做命令执行的前提是你得知道对方主机的用户名 密码,这一点就导致了 ,这个方法不能广泛的使用。因为想用户名和密码这种东西 人家是不会随随便便提供给你的。
在这里记录一下这个工具类
依赖包 jsch-0.1.48.jar
package com.ultrapower.project.web.bean; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; /** * SSH工具类 * @author * 2013-4-7 */ public class SSHHelper { /** * 远程 执行命令并返回结果调用过程 是同步的(执行完23才会返回) * @param host 主机名 * @param user 用户名 * @param psw 密码 * @param port 端口 * @param command 命令 * @return */ public static String exec(String host,String user,String psw,int port,String command){ String result=""; Session session =null; ChannelExec openChannel =null; try { JSch jsch=new JSch(); session = jsch.getSession(user, host, port); java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); session.setPassword(psw); session.connect(); openChannel = (ChannelExec) session.openChannel("exec"); openChannel.setCommand(command); int exitStatus = openChannel.getExitStatus(); System.out.println(exitStatus); openChannel.connect(); InputStream in = openChannel.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); String buf = null; while ((buf = reader.readLine()) != null) { result+= new String(buf.getBytes("gbk"),"UTF-8")+" <br>\r\n"; } } catch (JSchException | IOException e) { result+=e.getMessage(); }finally{ if(openChannel!=null&&!openChannel.isClosed()){ openChannel.disconnect(); } if(session!=null&&session.isConnected()){ session.disconnect(); } } return result; } public static void main(String args[]){ String exec = exec("192.168.0.144", "root", "root", 22, "cd agent;ps -ef|grep apache-flume"); System.out.println(exec); } }
这个方法具有一定局限性,每次做命令执行的前提是你得知道对方主机的用户名 密码,这一点就导致了 ,这个方法不能广泛的使用。因为想用户名和密码这种东西 人家是不会随随便便提供给你的。
相关文章推荐
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- Linux Generating SSH Keys
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户