[shell]通过ping检测整个网段IP的网络状态脚本

要实现Ping一个网段的所有IP,并检测网络连接状态是否正常,很多方法都可以实现,下面简单介绍两种,如下:
脚本1
#!/bin/sh
# Ping网段所有IP
# 2012/02/05
ip=1 #通过修改初值
while [ $ip != "254]; do 
#yes正常,no主机不存在或不正常
ping 192.168.0.$ip -c 2 | grep -q "ttl=" && echo "192.168.0.$ip yes" || echo "192.168.0.$ip no"
ip=`expr "$ip" "+" "1"`
done

输出结果:
192.168.0.1 yes
192.168.0.2 no
192.168.0.3 no
192.168.0.4 no
192.168.0.5 yes
192.168.0.6 no
192.168.0.7 yes
...

脚本2
#!/bin/sh
# Ping网段所有IP
# 2012/02/05
ip="192.168.0."
for i in `seq 1 254`
do
  ping -c 2 $ip$i | grep -q 'ttl=' && echo "$ip$i yes"|| echo "$ip$i no"
  #yes正常,no主机不存在或不正常
done

输出结果:
192.168.0.1 yes
192.168.0.2 no
192.168.0.3 no
192.168.0.4 no
192.168.0.5 yes
192.168.0.6 no
192.168.0.7 yes
...

如果您有更好的方法实现,可以给我留言~

时间: 2024-12-07 13:05:46

[shell]通过ping检测整个网段IP的网络状态脚本的相关文章

C# ping网络IP 实现网络状态检测的方法_C#教程

C# ping网络IP 实现网络状态检测的方法 public string GetHostNameByIp(string ip)  {  ip = ip.Trim();  if (ip == string.Empty)  return string.Empty;  try  {  // 是否 Ping 的通  if (this.Ping(ip))  {  System.Net.IPHostEntry host = System.Net.Dns.GetHostEntry(ip);  return 

超级 Ping 监测工具——为您的网络状态保驾护航

关于 Ping Ping 是一个网络命令,主要是用于确定本地主机是否能与另一台主机交换(发送与接收)数据.根据返回的信息,就可以推断 TCP/IP 参数是否设置得正确以及运行是否正常.正常情况下,Ping 将返回若干个参数,丢失率为 0,当网络状态不佳或网络中断的情况下,Ping 操作将无法正常返回 TTL 参数(显示请求超时或其他 bug ). 通过 Windows 平台的 ms-dos 可以简单执行 Ping 操作,然而这种操作只能简单测试网络是否正常联通,大体上排除网络访问层.网卡.MOD

检测网段IP使用情况的shell脚本_linux shell

复制代码 代码如下: #!/bin/bash#main---network=192.168.1ping_count=3IP=1:>IP_use:>IP_idle:>ping_actionecho "`date "+%Y%m%d %H:%M:%S"`----->脚本开始执行......"while [ $IP -lt 255 ]dohost=$network.$IPecho "-------->开始检测$host服务器通迅是否正

一个可交互的并发ping检测脚本_linux shell

复制代码 代码如下: #!/bin/bash#********************************##2013-01-11 17:00:00 wanggy exp  ##note:ping monitor               ##********************************#set -uping_fun(){    d_network=192.168.1    echo -n "input the network(default $d_network):&

一个ping检测告警函数代码_linux shell

复制代码 代码如下: #!/bin/bash ping_monitor()    {    host_=(203 204 205 207 208 209 210 212 213 214 215 216 217 218 219 220 221)    ping_count=3    called=(13000000001 13000000002 13000000003)    calling=13000000000    callop=1310000000    #main------------

路由器-如何ping通不同网段的pc机(详情见内容)

问题描述 如何ping通不同网段的pc机(详情见内容) 如图所示,其中Router1和Router2均添加了一个WIC-1T模块,因此均拥有一个串口,各项配置如下: 路由器Router1的串口配置IP:202.1.1.1 255.255.255.0: 路由器Router2的以太网口配置IP: 192.168.4.254 255.255.255.0,串口配置IP: 202.1.1.2 255.255.255.0 ① PC0: IP地址:192.168.1.1 子网掩码:255.255.255.0

c# 线程池-C# 多线程 Ping 几千个 IP地址 测试 主机可达测试 线程池

问题描述 C# 多线程 Ping 几千个 IP地址 测试 主机可达测试 线程池 //有什么办法可以做到在多线程环境下测试数据准确,大能帮忙看看问题出在什么地方,有什么解决方案...以下程序可运行 解决方案 1.最好别使用线程来实现,开销实在是太大了. 2.可以这么考虑,先只管发,即向每个ip地址发送1个icmp请求报文,然后就开始接收所有的icmp应答报文. 解决方案二: 考虑使用raw socket,把所有的icmp报文都收上来,然后再过滤. 解决方案三: 是否是多线程情况下,icmp请求过多

javaweb-java根据ip判断网络连接情况(i除Java执行ping命令和InetAddress这两种方式)

问题描述 java根据ip判断网络连接情况(i除Java执行ping命令和InetAddress这两种方式) 因为ava执行ping命令和InetAddress这两种方式执行速度太慢了,有没有更好的解决方法??? 解决方案 获得客户端真实IP地址的方法一: public String getRemortIP(HttpServletRequest request) { if (request.getHeader("x-forwarded-for") == null) { return r

java-双机热备,如何用浮动IP跨网络访问异地服务

问题描述 双机热备,如何用浮动IP跨网络访问异地服务 环境是这样的: 本地有两台服务器A.B A:192.168.151.170(主) B:192.168.151.171(备) 双机的浮动IP:192.168.151.174 承载网IP:10.182.254.164 异地服务端:172.16.122.39 在装双机之前,承载网映射的A服务器IP.A服务器可以ping通和telnet通异地服务器端.如:ping 172.16.122.39.代码里面调用异地服务端接口代码如下: String wsd