zoukankan      html  css  js  c++  java
  • java使用ssh访问Linux的项目jscraft

    一、gradle地址

    // https://mvnrepository.com/artifact/com.jcraft/jsch
    compile 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")+" <br> ";
                    result += new String(buf.getBytes("gbk"), "UTF-8") + " ";
                }
            } 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: " + 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
  • 相关阅读:
    备忘录 | ‘神器’在手,新世界大门我有
    1001种玩法 | HotswapAgent:支持无限次重定义运行时类与资源
    面面观 | CentOS install etcd 测试
    控制台、终端、虚拟终端和伪终端
    KMP算法,BoyerMoore算法
    qemu kvm 虚拟化
    web端log4net输出错误日志到mysql
    JQuery调用WCF服务,部署在iis
    首篇
    微信支付接口
  • 原文地址:https://www.cnblogs.com/yoyotl/p/7464316.html
Copyright © 2011-2022 走看看