`

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

    博客分类:
  • JVM
阅读更多

在编写网管系统的过程中,经常需要判断某台机器是否可用,于是采用使用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) {
			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) {
			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不同,不可用,否则为可用。

分享到:
评论

相关推荐

    Linux命令大全笔记

    ### Linux命令大全笔记 #### 一、压缩与解压缩命令 **1. zip** - **命令格式**: `zip [选项] [压缩文件名] [文件或目录]` - **示例**: `zip jpg.zip *.jpg` - **描述**: 用于将指定的文件或目录压缩成一个ZIP文件...

    基于 Java 的Ping程序的设计和实现课程设计(课程报告+源码)

    第三种也是使用java调用控制台的ping命令,具体的思路是这样的:通过程序调用类似“ping 127.0.0.1 -n 10 -w 4”的命令,这命令会执行ping十次,如果通顺则会输出类似“来自127.0.0.1的回复: 字节=32 时间”的文本...

    Linux操作命令

    - **ping命令** 用于测试网络连通性。 - **telnet命令** 用于远程登录其他机器。 - **netstat命令** 用于显示网络连接状态。 - **sync命令** 用于将缓存中的数据同步到磁盘。 - **chgrp命令** 用于更改文件或目录的...

    程序员必会的Linux命令

    ### 程序员必会的 Linux 命令 #### 一、查找文件 - **Find**: `find` 命令用于在文件系统中查找文件或目录。 - **基本格式**:`find [搜索起点] [选项]` - **示例**: - `find / -name filename.txt`:在根目录...

    hadoop伪分布式安装方法步骤

    在CentOS桌面右上角的图标上,右键修改网络设置,重启网卡,执行命令service network restart,验证:执行命令ifconfig。 2.2 修改主机名 修改当前会话中的主机名,执行命令hostname hadoop,验证:hostname。修改...

    java写的网络监控系统网络数据采集模块.zip

    java写的网络监控系统网络数据采集模块,基于java NIO,并没有使用MINA、netty等框架,主要通过采集端间歇性执行ping,telnet,tracert命令对执行的目标机器进行网络监控,并将监控结果汇总到服务器数据库。...

    WAS7_Linux群集安装记录

    - **介质安装**:介质安装应在计划安装WAS的所有机器上执行,安装过程中会包含Profile创建。 - **安装向导**:根据机器角色(Deployment Manager或Managed Node)选择不同的安装选项,遵循"安装DM机器"和"安装受管...

    linux学习笔记.docx

    Windows系统下,可以通过`ping`命令与Linux系统进行IPv6通信,只需要知道Linux系统的IPv6地址即可。确保两台机器的网络设置允许IPv6通信。 这些只是Linux学习的一部分,深入理解并掌握这些基础知识对于成为一名...

    elasticsearch.6.2.4-linux安装包.zip

    2. **Java 运行环境**:Elasticsearch 需要 Java Development Kit (JDK) 8 或以上版本。请先安装并验证 JDK 是否已正确安装。 **二、下载与解压** 1. **下载安装包**:从 Elasticsearch 官方网站或镜像站点下载 `...

    最新版linux elasticsearch-8.5.0-linux-x86-64.tar.gz

    1. 添加更多节点到集群,只需在新机器上重复上述安装和配置步骤,并确保`cluster.name`一致。 2. 使用`discovery.zen.ping.unicast.hosts`设置其他节点的IP地址,让新节点加入集群。 Elasticsearch 8.5.0还引入了新...

    linux基本培训指南

    ### Linux基本培训指南知识点详解 #### 一、文件与目录管理 在Linux系统中,对文件和目录的操作是日常工作中最频繁的任务之一。下面是一些常用的基本命令: 1. **切换目录**:`cd` - 用于在不同的目录之间进行...

    Linux下Hadoop分布式配置和使用

    在Namenode上使用`sbin/start-dfs.sh`命令启动HDFS,在任一节点上使用`sbin/start-yarn.sh`命令启动MapReduce服务。 #### 二、Hadoop使用 ##### 6. HDFS基本操作 - **列出HDFS根目录下的文件**: 使用`hdfs dfs...

    DOS命令的使用-常用

    通过以上内容的学习,我们可以了解到DOS命令的基本使用方法,以及Linux系统的基础知识和常用命令。此外,对于大数据领域的学习者来说,掌握分布式系统的基本原理以及Hadoop、Storm、Spark等关键技术框架是非常重要的...

    kafka分布式集群搭建

    例如,在Node1机器上执行以下命令: ```bash cd /home/logs/zookeeper1 echo "1" > myid ``` - 对于Node2和Node3也分别创建`myid`文件,并写入相应的ID值(2和3)。 #### 三、启动与验证 **1. 启动Zookeeper**...

    实验1:熟悉常用的Linux操作和Hadoop操作.docx.zip

    5. **网络配置**:理解`ifconfig`(查看或配置网络接口)和`ping`(测试网络连通性)等命令,以及如何查看和修改网络配置文件如`/etc/network/interfaces`。 **Hadoop基础知识** 1. **Hadoop架构**:Hadoop由HDFS...

    Python入门教程超详细1小时学会Python(1).pdf

    通过shell编程(如Linux的bash或Windows的批处理),我们可以轻松地执行ping命令,并通过解析输出结果来判断机器是否在线。与Java相比,Python的实现更简洁,无需创建类文件、main方法,可以直接运行,减少了额外的...

    vnc连接不上原因

    5. **端口冲突**:如果在同一台机器上运行多个VNC实例,则需要注意端口号的分配,避免端口冲突。 - 解决方法:可以通过指定不同的端口号来运行多个VNC实例,例如使用`vncserver :2`来启动第二个VNC会话。 6. **...

    实例教程1小时学会Python

    例如,在Windows上用ping ip 的命令依次测试各个机器并得到控制台输出.由于ping通的时候控制台文本通常是"Reply from ... " 而不通的时候文本是"time out ... " ,所以,在结果中进行字符串查找,即可知道该机器是否连通...

Global site tag (gtag.js) - Google Analytics