linux系统的检测脚本,用于检查linux的网络配置,包括网络接口状态、IP地址、子网掩码、默认网关、DNS服务器、连通性测试等等
创始人
2024-10-22 07:42:02
0

目录

一、要求

二、脚本介绍

1、脚本内容

2、脚本解释

(1) 检查是否以 root 用户身份运行

(2)显示脚本标题 

(3)打印主机名

(4)获取网络接口信息

(5)检查每个接口的状态

(6)检查默认网关

(7)检查DNS服务器

(8)进行 ping 测试

(a)输出标题说明接下来要进行网络连通性测试。

(b)进行 ping 测试

(c)对其他主机测试方法

3、脚本应用和运行

(1)脚本文件

(2)赋予权限

(3)执行结果

4、注意事项


一、要求

        由于工作需要,要编写一个用于检查Linux网络配置的自动检测脚本,可以涵盖多个方面,如网络接口状态、IP地址、子网掩码、默认网关、DNS服务器等,以及到公网的连通性的测试。

二、脚本介绍

        经过在centos系统中测试,完成了脚本,这个脚本可能需要根据具体系统配置(如使用的发行版)进行调整。

        闲话不说,直接介绍脚本吧。

1、脚本内容

       (PS:请注意,这个脚本可能需要根据具体需求和环境进行调整。)

 

 #!/bin/bash  # 检查是否以 root 用户身份运行 if [ "$(id -u)" != "0" ]; then     echo "This script must be run as root."     exit 1 fi  # 显示脚本标题   echo "" echo "    ====================="   echo "    Linux 网络配置检查脚本"   echo "    ====================="   echo "" # 打印主机名 echo "Hostname: $(hostname)"  echo "" echo "    ======== 获取并打印 IP所有网络接口 IP地址、子网掩码、状态和默认网关============="  # 获取网络接口信息 echo "正在检查网络接口状态..." interfaces=$(ip link show | awk -F: '$0 !~ "lo|vir|wl|^[^0-9]"{print $2;getline}')  # 检查每个接口的状态 for interface in $interfaces; do     echo "网络接口: $interface"     ip link show $interface | grep 'state UP' > /dev/null     if [ $? -eq 0 ]; then         echo "状态: 已激活"         # 获取IP地址         ip addr show $interface | grep 'inet ' | awk '{print "IP地址&掩码: "$2}'         # 获取MAC地址         mac=$(ip link show $interface | awk '/link\/ether/ {print $2}')         echo "MAC地址: $mac"     else         echo "状态: 未激活"     fi     echo "---------------------------------" done  # 检查默认网关 echo "正在检查默认网关..." default_gateway=$(ip route | grep default | awk '{print$3}') if [ -z "$default_gateway" ]; then     echo "未找到默认网关。" else     echo "默认网关: $default_gateway" fi  # 检查DNS服务器 echo "正在检查DNS服务器配置..." dns_servers=$(cat /etc/resolv.conf | grep nameserver | awk '{print$2}') if [ -z "$dns_servers" ]; then     echo "未配置DNS服务器。" else     echo "DNS服务器:"     for server in $dns_servers; do         echo "- $server"     done fi    echo "" echo "    ======= ping 测试  =========="  # 进行 ping 测试 echo "Testing connectivity to vidisit.cn (3 packets)..." ping -c 3 vidisit.cn  # 如果想对特定的主机进行测试,可以添加一个参数 if [ $# -eq 1 ]; then     echo "Testing connectivity to $1 (3 packets)..."     ping -c 3 $1 fi  

2、脚本解释

        脚本中主要部分的解释如下:

(1) 检查是否以 root 用户身份运行

if [ "$(id -u)" != "0" ]; then     echo "This script must be run as root."     exit 1 fi

        这段代码检查当前用户是否具有 root 权限。id -u 命令返回当前用户的用户ID,如果用户ID不是0(即不是root用户),则打印一条消息并退出脚本。

(2)显示脚本标题 

echo ""  echo "    ====================="   echo "    Linux 网络配置检查脚本"   echo "    ====================="   echo ""

        这些 echo 命令用于在控制台输出脚本标题。

(3)打印主机名

echo "Hostname: $(hostname)"

        输出当前系统的主机名,$(hostname) 是一个命令替换,它执行 hostname 命令并将输出结果替换到当前位置。

(4)获取网络接口信息

echo "正在检查网络接口状态..." interfaces=$(ip link show | awk -F: '$0 !~ "lo|vir|wl|^[^0-9]"{print $2;getline}')

        输出一条消息,然后使用 ip link show 命令获取网络接口信息,通过 awk 过滤掉本地回环接口(通常是 lo)、虚拟接口(通常是 virbr*)、无线接口(通常是 wl*)以及不以数字开头的行,最后打印出接口名称。

(5)检查每个接口的状态

for interface in $interfaces; do      echo "网络接口: $interface"      ip link show $interface | grep 'state UP' > /dev/null      if [ $? -eq 0 ]; then          echo "状态: 已激活"           获取IP地址          ip addr show $interface | grep 'inet ' | awk '{print "IP地址&掩码: "$2}'           获取MAC地址          mac=$(ip link show $interface | awk '/link\/ether/ {print $2}')          echo "MAC地址: $mac"      else          echo "状态: 未激活"      fi      echo "---------------------------------"  done

        这段代码遍历所有网络接口,并检查它们的状态。如果接口已激活,则打印出IP地址和MAC地址。

(6)检查默认网关

echo "正在检查默认网关..." default_gateway=$(ip route | grep default | awk '{print$3}') if [ -z "$default_gateway" ]; then     echo "未找到默认网关。" else     echo "默认网关: $default_gateway" fi

        检查系统的默认网关,如果找到则打印出来。

(7)检查DNS服务器

echo "正在检查DNS服务器配置..." dns_servers=$(cat /etc/resolv.conf | grep nameserver | awk '{print$2}') if [ -z "$dns_servers" ]; then     echo "未配置DNS服务器。" else     echo "DNS服务器:"     for server in $dns_servers; do         echo "- $server"     done  fi

        从 /etc/resolv.conf 文件中读取DNS服务器配置,并打印出来。

(8)进行 ping 测试

(a)输出标题说明接下来要进行网络连通性测试。

        echo ""

        echo "    ======= ping 测试  =========="

(b)进行 ping 测试

        echo "Testing connectivity to vidisit.cn (3 packets)..."

        ping -c 3 vidisit.cn

        使用 ping 命令测试到 vidisit.cn 的网络连通性,发送3个数据包。

(c)对其他主机测试方法

         如果想对特定的主机进行测试,可以添加一个参数

if [ $ -eq 1 ]; then     echo "Testing connectivity to $1 (3 packets)..."     ping -c 3 $1 fi

        如果脚本运行时提供了一个参数(即 $1),则使用该参数指定的主机名或IP地址进行 ping 测试。$ 表示传递给脚本的参数数量。

3、脚本应用和运行

(1)脚本文件

        将上述脚本保存为一个文件,例如  network_check_ok.sh。

(2)赋予权限

        赋予脚本执行权限,使用如下命令:

                chmod +x  network_check_ok.sh

(3)执行结果

        运行脚本使用如下命令:

        ./network_check_ok.sh。

        结果如下所示:

4、注意事项

(1)脚本中使用的命令(如 ip、systemd-resolve)在大多数现代Linux发行版中都是可用的,但在一些非常旧的发行版中可能不可用。

(2)对于DNS服务器,可以尝试使用 systemd-resolve(适用于使用systemd-resolved服务的系统),如果不可用,则回退到查看 /etc/resolv.conf 文件。但是查看 /etc/resolv.conf 最直接,所以本脚本采用此种方式。

(3)脚本的输出可能因系统配置和网络环境而异。

(4)脚本中没有包含错误处理逻辑,这在实际应用中可能是必要的。例如,可以添加一些检查来确保命令成功执行,并在失败时给出适当的错误消息。


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


相关内容

热门资讯

2分钟插件!开心十三张技巧,拼... 2分钟插件!开心十三张技巧,拼十辅助器(竟然是真的辅助安装)-哔哩哔哩在进入开心十三张技巧软件靠谱后...
刚刚"雅苑蕲春辅助&... 刚刚"雅苑蕲春辅助"真是是有辅助app(有挂透视)-哔哩哔哩1、下载好雅苑蕲春辅助正确养号方法之后点...
透视窍门!wepokerplu... 透视窍门!wepokerplus脚本(透视)开挂脚本下载(哔哩哔哩)1、点击下载安装,wepoker...
第九分钟诀窍!hhpoker一... 第九分钟诀窍!hhpoker一直输有挂吗(透视)一直有辅助安装(哔哩哔哩)1、进入游戏-大厅左侧-新...
第十分钟插件!闲逸透视免费版官... 第十分钟插件!闲逸透视免费版官方入口在哪里,掌中乐游戏中心辅助器(真是真的有辅助平台)-哔哩哔哩1、...
关于"创思维激k辅助... 关于"创思维激k辅助器视频"确实是真的有辅助技巧(有挂方式)-哔哩哔哩1、许多玩家不知道创思维激k辅...
第3分钟法子!竞技联盟辅助(透... 您好,竞技联盟辅助这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054】很多玩家在...
透视秘籍!wepoker辅助器... 透视秘籍!wepoker辅助器安装包(透视)开挂脚本工具(哔哩哔哩)1、wepoker辅助器安装包免...
第八分钟脚本!518互游辅助,... 第八分钟脚本!518互游辅助,hhpoker这个软件靠谱吗(确实真的有辅助插件)-哔哩哔哩1、hhp...
一起来探讨"小程序游... 一起来探讨"小程序游戏修改器辅助"果然真的有辅助教程(有挂攻略)-哔哩哔哩小程序游戏修改器辅助能透视...