利用java实现可远程执行linux命令的小工具
2013-08-13 17:29
881 查看
在linux的脚本中,如果不对机器做其他的处理,不能实现在linux的机器上执行命令。为了解决这个问题,写了个小工具来解决这个问题。
后面的代码是利用java实现的可远程执行linux命令的小工具,代码中使用了jsch这个开源包。
JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。jsch的jar,可从官网下载。
后面的代码是利用java实现的可远程执行linux命令的小工具,代码中使用了jsch这个开源包。
JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。jsch的jar,可从官网下载。
import java.io.IOException; import java.io.InputStream; import java.util.Properties; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; /** * * 类似ssh执行命令的小工具 * * @author walker * */ public class SSH { private String userName; private String password; private String host; public SSH(String host, String userName, String password) { this.host = host; this.userName = userName; this.password = password; } private Session getSession() { JSch jsch = new JSch(); Session session = null; try { session = jsch.getSession(userName, host); session.setPassword(password); Properties props = new Properties(); props.put("StrictHostKeyChecking", "no"); session.setConfig(props); session.connect(); } catch (JSchException e) { e.printStackTrace(); } return session; } public boolean exec(String[] cmds) { StringBuffer cmdBuffer = new StringBuffer(); for (int i = 0; i < cmds.length; i++) { if (i != 3) { cmdBuffer.append(" "); } cmdBuffer.append(cmds[i]); } return exec(cmdBuffer.toString()); } public boolean exec(String cmd) { Session session = getSession(); Channel channel = null; InputStream in = null; try { channel = session.openChannel("exec"); ((ChannelExec) channel).setCommand(cmd); ((ChannelExec) channel).setInputStream(null); ((ChannelExec) channel).setErrStream(System.err); // 获取执行错误的信息 in = channel.getInputStream(); channel.connect(); byte[] b = new byte[1024]; int size = -1; while ((size = in.read()) > -1) { System.out.print(new String(b, 0, size)); // 打印执行命令的所返回的信息 } return true; } catch (Exception e) { e.printStackTrace(); } finally { // 关闭流 if (in != null) { try { in.close(); } catch (IOException e) { } } // 关闭连接 channel.disconnect(); session.disconnect(); } return false; } /** * @param args */ public static void main(String[] args) { if (args.length < 4) { System.err.println("usage:\n\t" + SSH.class.getName() + " <host> <usename> <password> <cmds>"); System.exit(1); } // 用以保存命令(可能是一串很长的命令) StringBuffer cmdBuffer = new StringBuffer(); for (int i = 3; i < args.length; i++) { if (i != 3) { cmdBuffer.append(" "); } cmdBuffer.append(args[i]); } SSH ssh = new SSH(args[0], args[1], args[2]); System.exit(ssh.exec(cmdBuffer.toString()) ? 0 : 1); } }
相关文章推荐
- 利用java实现可远程执行linux命令的小工具
- JAVA实现远程SSH连接linux并执行命令
- java中利用jsch执行远程命令,实现sftp
- 在Windows下用plink工具批量实现自动远程登录Linux并执行关机命令
- Ganymed SSH-2 java执行远程linux机器命令工具
- Java实现远程连接Linux并执行命令
- linux下远程服务器批量执行命令及SFTP上传文件 -- python实现
- Java利用ssh工具远程执行shell脚本
- java 使用jsch 远程链接linux执行命令
- linux 下远程执行命令 socket实现
- JAVA利用SSH2登录LINUX并执行命令
- java 使用jsch 远程链接linux执行命令
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
- linux 下远程执行命令 socket实现
- java本地调用cmd,shell命令,远程调用Linux执行命令方法总结
- linux expect实现登陆远程主机并执行命令示例代码
- Java 远程执行 Linux 的命令
- Java利用ssh协议实现本地文件到远程Linux服务器的上传。
- 采用JSCH实现对linux远程操作(SSH协议),实现在远程linux机器上执行相关的命令
- java远程执行linux命令