博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java使用ssh访问Linux的项目jscraft
阅读量:6602 次
发布时间:2019-06-24

本文共 3148 字,大约阅读时间需要 10 分钟。

一、gradle地址

// https://mvnrepository.com/artifact/com.jcraft/jschcompile group: 'com.jcraft', name: 'jsch', version: '0.1.54'

二、远程登录实例

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; public class SSHHelper {
    /**      * 远程 执行命令并返回结果调用过程 是同步的(执行完才会返回)      *      * @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")+"
\r\n";                 result += new String(buf.getBytes("gbk"), "UTF-8") + "\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.25.128", "root", "password", 22, "sleep 10;ls;");         // String exec = exec("192.168.25.128", "root", "password", 22, "fs_cli -x         // status");         // String exec = exec("172.18.4.114", "root", "root01", 22, "fs_cli -x status");         String exec = exec("172.18.4.114", "root", "assr", 22,                 "sshpass -p 'root01' scp /home/test.txt root@172.18.4.125:/home");         System.out.println("reply:\n" + exec);     } }

三、一些涉及二次密码输入的情况

引入新的项目sshpass。

1. 下载及安装

$ wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz$ tar -xvf sshpass.tar.gz$ cd sshpass-1.06$ ./configure# sudo make install

2. 使用示例

sshpass -p 'root123456' scp /home/test.txt root@192.168.4.125:/home

 

转载于:https://www.cnblogs.com/yoyotl/p/7464316.html

你可能感兴趣的文章
centos 5.4 上安装 Oracle11g R2 RAC (ASM)
查看>>
【原创】如何查看某进程下运行的线程
查看>>
HTML代码简写法:Emmet和Haml
查看>>
[数据库] Navicat for Oracle基本用法图文介绍
查看>>
算法系列15天速成——第一天 七大经典排序【上】
查看>>
Xcode调试LLDB
查看>>
泛函编程(24)-泛函数据类型-Monad, monadic programming
查看>>
OEA中的AutoUI重构(3)- 评审会议后的设计
查看>>
Java虚拟机详解04----GC算法和种类【重要】
查看>>
Oracle官方并发教程之Executor接口
查看>>
A*寻路算法入门(一)
查看>>
【RMAN】RMAN-20020: DATABASE INCARNATION NOT SET
查看>>
设计模式(3)-装扮你的类(装饰模式)
查看>>
海量存储之十六--一致性和高可用专题
查看>>
openlayers3添加地图控件
查看>>
拓扑排序模板
查看>>
ios copy/strong/weak..使用总结
查看>>
网络协议系列之九:TCP计时器
查看>>
Windows 上 Caffe开发环境搭建
查看>>
zigbee学习之ADC采集芯片内部的温度
查看>>