java 通过ssh连接linux服务器的测试代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 通过ssh连接linux服务器的测试代码相关的知识,希望对你有一定的参考价值。

    public static void test_connect_host() throws Exception {

        SimpleDateFormat date_format = new SimpleDateFormat("yyyyMMdd_HHmmss");

        String[] host_ip_list = new String[] { "192.168.2.179", "192.168.17.5", };

        String[] host_password_list = new String[] { "", "", };
        String[] identity_password_list = new String[] { "", "", };

        int[] host_port_list = new int[] { 22, 51255, };

        String[] connect_type_list = new String[] { "password", "publickey", };

        String host_user = "root";

        //
        for (int i = 0; i < host_ip_list.length; i++) {
            String host_ip = host_ip_list[i];
            int host_port = host_port_list[i];
            String host_password = host_password_list[i];
            String identity_password = identity_password_list[i];
            String connect_type = connect_type_list[i];
            
            JSch jsch = new JSch();
            Session session = null;
            
            // 连接机器ssh , 指定某种方式
            /*             
                         if (connect_type.equalsIgnoreCase("password")) {
                         session = jsch.getSession(host_user, mysql_host, host_port);
                         session.setPassword(host_password);
                         } else if (connect_type.equalsIgnoreCase("publickey")) {
                         jsch.addIdentity("D:\\tmp\\admin_id_dsa_private.private", "");
                         session = jsch.getSession(host_user, mysql_host, host_port);
                         } else {
                         continue;
                         }
                         UserInfo ui = new LocalUserInfo();
                         session.setUserInfo(ui);
                        
                         Hashtable<String, String> config = new Hashtable<String,
                         String>();
                         config.put("StrictHostKeyChecking", "no");
                         session.setConfig(config);
                        
                         session.connect();
            */

            // 遍历所有的方式 , 成功即可

            boolean connectflag = false;
            for (int j = 0; j < connect_type_list.length; j++) {
                String v_connect_type = connect_type_list[i];
                try {
                    if (v_connect_type.equalsIgnoreCase("password")) {
                        session = jsch.getSession(host_user, host_ip, host_port);
                        session.setPassword(host_password);
                    } else if (v_connect_type.equalsIgnoreCase("publickey")) {
                        jsch.addIdentity("D:\\tmp\\admin_id_dsa_private.private", identity_password);
                        session = jsch.getSession(host_user, host_ip, host_port);
                    } else {
                        continue;
                    }
                    UserInfo vui = new LocalUserInfo();
                    session.setUserInfo(vui);

                    Hashtable<String, String> vconfig = new Hashtable<String, String>();
                    vconfig.put("StrictHostKeyChecking", "no");
                    session.setConfig(vconfig);

                    session.connect();
                    connectflag = true;
                    break;
                } catch (Exception e) {
                    // TODO: handle exception
                }
            }
            if (connectflag == false) {
                continue;
            }

            // 统一的方式

            /*            jsch.addIdentity("D:\\tmp\\admin_id_dsa_private.private");
                        session = jsch.getSession(host_user, host_ip, host_port);
                        session.setPassword(host_password);
                        Properties config = new Properties();
                        config.put("StrictHostKeyChecking", "no");
                        session.setConfig(config);
                        session.setTimeout(60);
                        session.connect();*/

            // 执行命令
            String execstr = "ls -lU --full-time --time-style=‘+%F_%T‘ ~";

            System.out.println(date_format.format(new Date()) + " \t " + execstr);

            Channel channel = session.openChannel("exec");
            ((ChannelExec) channel).setCommand(execstr);
            InputStream in = channel.getInputStream();
            channel.connect();
            int nextChar;
            StringBuffer sb = new StringBuffer();
            while (true) {
                while ((nextChar = in.read()) != -1) {
                    sb.append((char) nextChar);
                }
                if (channel.isClosed()) {
                    // System.out.println("exit-status: " +
                    // channel.getExitStatus());
                    break;
                }
                try {
                    Thread.sleep(1000);
                } catch (Exception ee) {
                    ee.printStackTrace();
                }
            }
            String ret = sb.toString();

            System.out.println(ret);
            if (channel != null) {
                channel.disconnect();
            }

            if (session != null) {
                session.disconnect();
            }
        }

        System.out.println("======================== successfully ========================");

    }

 

以上是关于java 通过ssh连接linux服务器的测试代码的主要内容,如果未能解决你的问题,请参考以下文章

Java通过ssh向服务器上传下载删除文件和操作Linux

ssh怎么连接服务器

通过ssh进行远程访问

Windows 和 Linux 中的 Java ssh 连接

xshell怎么连接linux服务器

系统运维--linux服务器上传测试代码注意事项