linux命令之-----ping命令简介以及检查同一网段ip地址是否网络联通的脚本

来源:互联网 发布:php在线模拟考试系统 编辑:程序博客网 时间:2024/06/05 00:23

ping命令的用途用来检查网络的联通性 


1、命令作用

执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

2、命令语法

ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]
参数说明

  • -d 使用Socket的SO_DEBUG功能。
  • -c<完成次数> 设置完成要求回应的次数。
  • -f 极限检测。
  • -i<间隔秒数> 指定收发信息的间隔时间。
  • -I<网络界面> 使用指定的网络界面送出数据包。
  • -l<前置载入> 设置在送出要求信息之前,先行发出的数据包。
  • -n 只输出数值。
  • -p<范本样式> 设置填满数据包的范本样式。
  • -q 不显示指令执行过程,开头和结尾的相关信息除外。
  • -r 忽略普通的Routing Table,直接将数据包送到远端主机上。
  • -R 记录路由过程。
  • -s<数据包大小> 设置数据包的大小。
  • -t<存活数值> 设置存活数值TTL的大小。
  • -v 详细显示指令的执行过程。

3、检测步骤

1) 使用ifconfig观察本地网络设置是否正确

root@localhost:/# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:04:1e:e9  
          inet addr:192.168.2.32  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe04:1ee9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2036926 errors:0 dropped:951 overruns:0 frame:0
          TX packets:1991397 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:574918960 (548.2 MiB)  TX bytes:1412850063 (1.3 GiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:164154 errors:0 dropped:0 overruns:0 frame:0
          TX packets:164154 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:45693824 (43.5 MiB)  TX bytes:45693824 (43.5 MiB)

2) ping 127.0.0.1来检查本地的TCP/IP协议有没有设置好

root@localhost:/# ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.043 ms
64 bytes from 127.0.0.1: icmp_req=2 ttl=64 time=0.040 ms

3) ping本机IP地址,这样是为了检查本机的IP地址是否设置有误

root@localhost:/# ping 192.168.2.32
PING 192.168.2.32 (192.168.2.32) 56(84) bytes of data.
64 bytes from 192.168.2.32: icmp_req=1 ttl=64 time=0.024 ms
64 bytes from 192.168.2.32: icmp_req=2 ttl=64 time=0.044 ms

4) ping本网网关或本网IP地址来检查硬件设备或者本地网络是否正常

root@localhost:/# ping 192.168.2.200
PING 192.168.2.200 (192.168.2.200) 56(84) bytes of data.
64 bytes from 192.168.2.200: icmp_req=1 ttl=255 time=0.811 ms
64 bytes from 192.168.2.200: icmp_req=2 ttl=255 time=0.938 ms

5) ping本地DNS地址,这样做是为了检查DNS是否能够将IP正确解析

root@localhost:/# ping localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_req=1 ttl=64 time=0.020 ms
64 bytes from localhost (127.0.0.1): icmp_req=2 ttl=64 time=0.045 ms

6) ping远程IP地址,这主要是检查本网或本机与外部的连接是否正常

root@localhost:/# ping 192.168.2.50
PING 192.168.2.50 (192.168.2.50) 56(84) bytes of data.
64 bytes from 192.168.2.50: icmp_req=1 ttl=255 time=0.811 ms
64 bytes from 192.168.2.50: icmp_req=2 ttl=255 time=0.938 ms

7)ping 使用参数ping本地ip

-i 3 发送周期为 3秒 -s 设置发送包的大小 -t 设置TTL值为 255

root@localhost:/# ping -i 3 -s 1024 -t 255 192.168.2.32
PING 192.168.2.32 (192.168.2.32) 1024(1052) bytes of data.
1032 bytes from 192.168.2.32: icmp_req=1 ttl=64 time=0.032 ms
1032 bytes from 192.168.2.32: icmp_req=2 ttl=64 time=0.050 ms
^C
--- 192.168.2.32 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.032/0.041/0.050/0.009 ms

4、故障信息

1) No Answer: 原因可能是,对方主机没工作,双方网络配置不正确,路由问题等。 

2) Request Time Out: 对方主机已关机,路由问题或对端防火墙设置禁止ping 

3) Unknown Host Name: DNS设置问题,或者对方主机不存在 

4) Destination Net Unreachable: 双方没有建立连接,或对方主机不存在 

5) Bad IP Address: IP地址不存在或IP不能被DNS服务器解析

5、Linux下允许禁止ping的方法

# 临时允许、禁止ping的设置


# 永久允许、禁止ping的设置

1) /etc/sysctl.conf 中增加一行

net.ipv4.icmp_echo_ignore_all=1          # 1表示禁止

net.ipv4.icmp_echo_ignore_all=0          # 0表示允许

2) 修改完成后执行sysctl -p使新配置生效

6、检查同一网段ip地址是否网络联通的脚本

第一种写法:

#!/bin/bash
echo "检查同一网段ip地址是否网络联通"
ip=1
while [ $ip != 254 ]
do
    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

第二种写法:

#!/bin/bash
 for ip in $(seq 1 254)
do
    site="192.168.2.${ip}"
    ping -c2 -W1 ${site} > /dev/null 2>&1
    if [ "$?" == "0" ]; then
        echo "$site is up!"
    else
        echo "$site is down!"                                                                                             
    fi
done

1 0
原创粉丝点击