java linux ping_linux机器上执行ping命令的java方法

在编写网管系统的过程中,经常需要判断某台机器是否可用,于是采用使用ping机器的方法判断该机器当前是否可用,方法如下:

/**

* @Title: execPingCommand

* @Description: 执行ping命令,查看设备是否可用

* @param @param deviceIp

* @return boolean  true-能ping通,false-不能ping通

* @throws

*/

public static boolean execPingCommand(String deviceIp){

logger.debug("enter VolumeManage.execPingCommand(String deviceIp) ");

boolean networkUseable = false;

//String address="www.javawind.net";

Process process = null;

try {

process = Runtime.getRuntime().exec("ping -c 3 "+deviceIp);

} catch (IOException e1) {

// TODO Auto-generated catch block

logger.error("System error: ", e1);

}

InputStreamReader r = new InputStreamReader(process.getInputStream());

LineNumberReader returnData = new LineNumberReader(r);

String returnMsg="";

String line = "";

try {

while ((line = returnData.readLine()) != null) {

//System.out.println(line);

returnMsg += line;

}

if(returnMsg.indexOf("Unreachable") != -1 || returnMsg.indexOf("100% packet loss") != -1){

networkUseable = false;

}

else{

networkUseable = true;

}

}catch (IOException e) {

// TODO Auto-generated catch block

logger.error("System error: ", e);

} finally{

if(returnData != null){

try {

returnData.close();

} catch (IOException e) {

// TODO Auto-generated catch block

logger.error("System error: ", e);

}

}

if(r != null){

try {

r.close();

} catch (IOException e) {

// TODO Auto-generated catch block

logger.error("System error: ", e);

}

}

}

logger.debug("exit VolumeManage.execPingCommand(String deviceIp) " + "[networkUseable] = " + networkUseable);

return networkUseable;

}

此方法关键命令为红色部分:ping -c 3 + ip;这个命令为linux系统所有,windows上不能执行,表示方法执行之后,只需要返回3行响应消息便可,不然在linux中,如果不终止该命令,会不停的打印响应的消息。

ping通机器的响应消息如下:

[root@abc ~]# ping -c 3 192.168.3.51

PING 192.168.3.51 (192.168.3.51) 56(84) bytes of data.

64 bytes from 192.168.3.51: icmp_seq=1 ttl=64 time=14.6 ms

64 bytes from 192.168.3.51: icmp_seq=2 ttl=64 time=0.332 ms

64 bytes from 192.168.3.51: icmp_seq=3 ttl=64 time=0.359 ms

--- 192.168.3.51 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2000ms

rtt min/avg/max/mdev = 0.332/5.103/14.619/6.728 ms

[root@abc ~]#

ping不同的机器的响应消息如下:

[root@abc ~]# ping -c 3 192.168.3.52

PING 192.168.3.52 (192.168.3.52) 56(84) bytes of data.

From 192.168.7.181 icmp_seq=1 Destination Host Unreachable

From 192.168.7.181 icmp_seq=2 Destination Host Unreachable

From 192.168.7.181 icmp_seq=3 Destination Host Unreachable

--- 192.168.3.52 ping statistics ---

3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2000ms

, pipe 3

[root@abc ~]#

因此,方法根据这两个条件进行判断,如果含有Unreachable或者100% packet loss就表示机器ping不同,不可用,否则为可用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值