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
  • 相关阅读:
    Use Gravatar in ASP.NET
    Silverlight ToolkitPivotViewer
    The Future of Silverlight December 2, 2010 at 9:00
    WPF杂记…
    Windows Phone 7开发者站点
    安装 Internet Explorer 9 Beta 的先决条件
    Internet Explorer 9 Beta(多图)
    Expression Blend4 中文
    Silverlight and WPF Virtual books
    Server2008 安装 Zune
  • 原文地址:https://www.cnblogs.com/yoyotl/p/7464316.html
Copyright © 2011-2022 走看看