在编写网管系统的过程中,经常需要判断某台机器是否可用,于是采用使用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命令大全笔记 #### 一、压缩与解压缩命令 **1. zip** - **命令格式**: `zip [选项] [压缩文件名] [文件或目录]` - **示例**: `zip jpg.zip *.jpg` - **描述**: 用于将指定的文件或目录压缩成一个ZIP文件...
第三种也是使用java调用控制台的ping命令,具体的思路是这样的:通过程序调用类似“ping 127.0.0.1 -n 10 -w 4”的命令,这命令会执行ping十次,如果通顺则会输出类似“来自127.0.0.1的回复: 字节=32 时间”的文本...
- **ping命令** 用于测试网络连通性。 - **telnet命令** 用于远程登录其他机器。 - **netstat命令** 用于显示网络连接状态。 - **sync命令** 用于将缓存中的数据同步到磁盘。 - **chgrp命令** 用于更改文件或目录的...
### 程序员必会的 Linux 命令 #### 一、查找文件 - **Find**: `find` 命令用于在文件系统中查找文件或目录。 - **基本格式**:`find [搜索起点] [选项]` - **示例**: - `find / -name filename.txt`:在根目录...
在CentOS桌面右上角的图标上,右键修改网络设置,重启网卡,执行命令service network restart,验证:执行命令ifconfig。 2.2 修改主机名 修改当前会话中的主机名,执行命令hostname hadoop,验证:hostname。修改...
java写的网络监控系统网络数据采集模块,基于java NIO,并没有使用MINA、netty等框架,主要通过采集端间歇性执行ping,telnet,tracert命令对执行的目标机器进行网络监控,并将监控结果汇总到服务器数据库。...
- **介质安装**:介质安装应在计划安装WAS的所有机器上执行,安装过程中会包含Profile创建。 - **安装向导**:根据机器角色(Deployment Manager或Managed Node)选择不同的安装选项,遵循"安装DM机器"和"安装受管...
Windows系统下,可以通过`ping`命令与Linux系统进行IPv6通信,只需要知道Linux系统的IPv6地址即可。确保两台机器的网络设置允许IPv6通信。 这些只是Linux学习的一部分,深入理解并掌握这些基础知识对于成为一名...
### Linux基本培训指南知识点详解 #### 一、文件与目录管理 在Linux系统中,对文件和目录的操作是日常工作中最频繁的任务之一。下面是一些常用的基本命令: 1. **切换目录**:`cd` - 用于在不同的目录之间进行...
2. **Java 运行环境**:Elasticsearch 需要 Java Development Kit (JDK) 8 或以上版本。请先安装并验证 JDK 是否已正确安装。 **二、下载与解压** 1. **下载安装包**:从 Elasticsearch 官方网站或镜像站点下载 `...
1. 添加更多节点到集群,只需在新机器上重复上述安装和配置步骤,并确保`cluster.name`一致。 2. 使用`discovery.zen.ping.unicast.hosts`设置其他节点的IP地址,让新节点加入集群。 Elasticsearch 8.5.0还引入了新...
在Namenode上使用`sbin/start-dfs.sh`命令启动HDFS,在任一节点上使用`sbin/start-yarn.sh`命令启动MapReduce服务。 #### 二、Hadoop使用 ##### 6. HDFS基本操作 - **列出HDFS根目录下的文件**: 使用`hdfs dfs...
通过以上内容的学习,我们可以了解到DOS命令的基本使用方法,以及Linux系统的基础知识和常用命令。此外,对于大数据领域的学习者来说,掌握分布式系统的基本原理以及Hadoop、Storm、Spark等关键技术框架是非常重要的...
例如,在Node1机器上执行以下命令: ```bash cd /home/logs/zookeeper1 echo "1" > myid ``` - 对于Node2和Node3也分别创建`myid`文件,并写入相应的ID值(2和3)。 #### 三、启动与验证 **1. 启动Zookeeper**...
5. **网络配置**:理解`ifconfig`(查看或配置网络接口)和`ping`(测试网络连通性)等命令,以及如何查看和修改网络配置文件如`/etc/network/interfaces`。 **Hadoop基础知识** 1. **Hadoop架构**:Hadoop由HDFS...
通过shell编程(如Linux的bash或Windows的批处理),我们可以轻松地执行ping命令,并通过解析输出结果来判断机器是否在线。与Java相比,Python的实现更简洁,无需创建类文件、main方法,可以直接运行,减少了额外的...
5. **端口冲突**:如果在同一台机器上运行多个VNC实例,则需要注意端口号的分配,避免端口冲突。 - 解决方法:可以通过指定不同的端口号来运行多个VNC实例,例如使用`vncserver :2`来启动第二个VNC会话。 6. **...
例如,在Windows上用ping ip 的命令依次测试各个机器并得到控制台输出.由于ping通的时候控制台文本通常是"Reply from ... " 而不通的时候文本是"time out ... " ,所以,在结果中进行字符串查找,即可知道该机器是否连通...