运维必备技能:如何使用shell+ping检测一组IP地址网络连通性

791 阅读1分钟

如何使用shell+ping检测一组IP地址网络连通性

ping命令在Shell脚本中很有用

Ping命令是一种常用的网络工具,用于测试主机之间是否可以相互通信。在Shell脚本中,ping命令可以用于测试一组IP地址的连通性,从而帮助运维人员诊断网络问题和自动化任务。

简单的Shell脚本,用于循环ping一组IP地址并检查其可达性

#!/bin/bash

# 循环遍历IP地址列表
for ip in 192.168.1.1 192.168.1.2 192.168.1.3
do
    # 使用ping命令测试IP是否可达
    ping -c 1 "$ip" > /dev/null
    
    # 检查ping命令的退出状态码
    if [ "$?" -eq "0" ]
    then
        echo "$ip is up."
    else
        echo "$ip is down."
    fi
done

在这个模板中,我们使用一个for循环来遍历IP地址列表,并使用ping命令测试每个IP地址的可达性。然后,我们检查ping命令的退出状态码,以确定IP地址是否可达,并输出相应的结果。

从文件中读取一组IP地址列表, 通过传参的方式

# 从文件中读取IP地址列表
ip_file=$1
if [ -z "$ip_file" ]
then
    echo "Usage: $0 <ip_file>"  # 打印脚本的使用方法
    exit 1
fi

ips=($(cat "$ip_file"))  # 将文件中的IP地址列表读取到数组中

# 循环遍历IP地址列表
for ip in "${ips[@]}"
do
    ping -c 1 "$ip" > /dev/null  # 使用ping命令测试IP是否可达, 输出重定向到/dev/null
    
    # 检查ping命令的退出状态码
    if [ "$?" -eq 0 ]
    then
        echo "$ip is up."  # 如果ping命令的退出状态码为0, 表示IP可达
    else
        echo "$ip is down."  # 如果ping命令的退出状态码不为0, 表示IP不可达
    fi
done

在这个模板中,用于从文件中读取IP地址列表,并使用ping命令测试每个IP地址的可达性。