java实现Linux环境下ping命令并返回数据,telnet端口检测命令,ssh命令

java实现Linux环境下ping命令并返回数据,telnet端口检测命令,ssh命令

一.ping命令,并返回数据(linux)

 public SysDiagnosticToolVo ping(String ip) {
        SysDiagnosticToolVo sysDiagnosticToolVo = new SysDiagnosticToolVo();
        String result = null;
        if (ip == null || ip.length() <= 0) {
            sysDiagnosticToolVo.setPingData("请输入ip地址");
            return sysDiagnosticToolVo;
        }
        BufferedReader br = null;
        try {
			//注意,linux环境与windows环境ping命令返回的不同
			//windows环境下: Process ps = Runtime.getRuntime().exec("ping  "+ ip);//ping后面有空格
			//下面是linux下使用的命令,需要注意的是,ping -c 4后面有一个空格,该空格不可去
          Process ps = Runtime.getRuntime().exec("ping -c 4 "+ ip);
          //获取命令的返回数据
            br = new BufferedReader(new InputStreamReader(ps.getInputStream(), Charset.forName("GBK")));
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = br.readLine()) != null) {
                //执行结果加上回车
                sb.append(line).append("\n");
            }
            result = sb.toString();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null) {
                    br.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        sysDiagnosticToolVo.setIp(ip);
        sysDiagnosticToolVo.setPingData(result);
        return sysDiagnosticToolVo;
    }

二.telnet端口检测命令

  //socket超时时间
    final Integer timeout = 200;
public String telnet(SysDiagnosticToolDto sysDiagnosticToolDto) {
        String result = null;
        String ip = sysDiagnosticToolDto.getIp();
        Integer port = sysDiagnosticToolDto.getPort();
        if (ip == null || ip.length() <= 0 || port == null) {
            return null;
        }
        try (Socket socket = new Socket()) {
            socket.connect(new InetSocketAddress(ip, port), timeout); // 建立连接
         /*   BufferedReader  br = new BufferedReader(new InputStreamReader(socket.getInputStream(), Charset.forName("GBK"))); StringBuffer sb = new StringBuffer();
                String line;
                while ((line = br.readLine()) != null) {
                    sb.append(line).append("\n");
                }*/
            //端口通时,返回结果.但是采用BufferedReader有可能会影响应能,程序运行时间长,不如直接返回固定字符串效率高
            // result = sb.toString();
            result =ip +":"+ port + "端口通";
        } catch (IOException e) {
            e.printStackTrace();
            result =ip +":"+ port + "端口不通";
        }
        return result;
    }

三.ssh命令

 public String ssh(SysDiagnosticToolDto sysDiagnosticToolDto) {
        String ip = sysDiagnosticToolDto.getIp();
        Integer port = sysDiagnosticToolDto.getPort();
        String userName = sysDiagnosticToolDto.getUserName();
        String password = sysDiagnosticToolDto.getPassword();
        String result;
        if (ip == null || ip.length() <= 0 || port == null) {
            return null;
        }
        if (port != 22) {
            result = "端口号错误";
            return result;
        }
        JSch jSch = new JSch();
        try {
            Session session = jSch.getSession(userName, ip, port);
            session.setPassword(password);
            session.setConfig("StrictHostKeyChecking", "no");
            session.connect(3000);
            result = "登录成功";
        } catch (JSchException e) {
            result = "登录失败";
            e.printStackTrace();
        }
        return result;
    }

四.相关jar包

 <!--telnet与ssh命令需要的jar包-->
        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.55</version>
        </dependency>
        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>3.7</version>
        </dependency>
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值