• 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()) + " 	 " + 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 ========================");
    
        }
  • 相关阅读:
    vmware centos .net core sdk开发测试
    Unable to bind to http://localhost:8080 on the IPv6 loopback interface: 'Cannot assign requested address'.
    把bootstrap4 dropdown 的导航下拉菜单触发方式改为鼠标浮动触发
    vs项目同步到gitee方法
    PetaPoco轻量级ORM框架
    本田汽车车机大屏破解教程
    SqlServer 游标逐行更新数据,根据上一行的数据来更新当前行
    Angular 2/4/5+ 重复点击菜单刷新界面
    Ionic 2 + 手动搭建开发环境教程 【转】
    在过去五分钟内,TypeScript语言服务以外终止了5次
  • 原文地址:https://www.cnblogs.com/fyzjhh/p/6634794.html
Copyright © 2020-2023  润新知