采用JSCH实现对linux远程操作(SSH协议),实现在远程linux机器上执行相关的命令
2012-09-02 14:34
826 查看
采用JSCH实现对linux远程操作(SSH协议),实现在远程linux机器上执行相关的命令
暂时功能还比较简单
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.Charset; 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; public class JSchDemo { private String charset = "UTF-8"; // 设置编码格式 private String user; // 用户名 private String passwd; // 登录密码 private String host; // 主机IP private JSch jsch; private Session session; /** * * @param user用户名 * @param passwd密码 * @param host主机IP */ public JSchDemo(String user, String passwd, String host) { this.user = user; this.passwd = passwd; this.host = host; } /** * 连接到指定的IP * * @throws JSchException */ public void connect() throws JSchException { jsch = new JSch(); session = jsch.getSession(user, host, 22); session.setPassword(passwd); java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); session.connect(); } /** * 执行相关的命令 */ public void execCmd() { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String command = ""; BufferedReader reader = null; Channel channel = null; try { while ((command = br.readLine()) != null) { channel = session.openChannel("exec"); ((ChannelExec) channel).setCommand(command); channel.setInputStream(null); ((ChannelExec) channel).setErrStream(System.err); channel.connect(); InputStream in = channel.getInputStream(); reader = new BufferedReader(new InputStreamReader(in, Charset.forName(charset))); String buf = null; while ((buf = reader.readLine()) != null) { System.out.println(buf); } } } catch (IOException e) { e.printStackTrace(); } catch (JSchException e) { e.printStackTrace(); } finally { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } channel.disconnect(); session.disconnect(); } } public static void main(String[] args) throws Exception { String user = "root"; String passwd = "123456"; String host = "192.168.1.188"; JSchDemo demo = new JSchDemo(user, passwd, host); demo.connect(); demo.execCmd(); } }
暂时功能还比较简单
相关文章推荐
- Python 使用paramiko实现远程登录Linux主机并执行命令和操作
- JAVA实现远程SSH连接linux并执行命令
- linux 实现多台ssh信任 执行命令的操作
- SSH登录到远程linux机器并执行命令
- jenkins 2:用ssh agent插件在pipeline里实现scp和远程执行命令
- 利用java实现可远程执行linux命令的小工具
- ssh在linux中---OpenSSH命令操作远程登录及传送文件
- Python实现SSH远程登陆,并执行远程命令
- linux下使用ssh远程执行命令批量导出数据库到本地
- Linux下使用SSH非交互式远程执行命令脚本---ssh无密码登陆
- java中使用JSCH包,SFTP及SSH2文件操作及远程命令执行
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
- SSH 在本地执行远程机器上的命令
- linux下使用ssh远程执行命令批量导出数据库到本地
- 一个用ssh来远程登录多台机器并执行命令的脚本
- ssh远程机器并执行命令输出到终端
- Linux下非交互式远程执行命令脚本(比ssh更好的方式)
- 如何通过命令行执行远程linux机器上的命令
- Ganymed SSH-2 java执行远程linux机器命令工具
- Linux下使用SSH非交互式远程执行命令脚本