linux系统的检测脚本,用于检查linux的网络配置,包括网络接口状态、IP地址、子网掩码、默认网关、DNS服务器、连通性测试等等

news2024/11/15 8:34:05

目录

一、要求

二、脚本介绍

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 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1966428.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React学习之props(父传子,子传父),Context组件之间的传参。

目录 前言 一、什么时候需要使用props? 二、使用 1.父传子 2.子传父 二、什么时候需要使用Context? 第一步: 第二步使用: 第一种: 第二种: 演示: 总结 前言 React学习笔记记录,pr…

python | TypeError: list indices must be integers or slices, not tuple

python | TypeError: list indices must be integers or slices, not tuple 在Python编程中,TypeError: list indices must be integers or slices, not tuple 是一个常见的错误。此错误通常发生在尝试使用非整数(如元组)作为列表索引时。本…

WSL和Windows建立TCP通信协议

1.windows配置 首先是windows端,启动TCP服务端,用来监听指定的端口号,其中IP地址可以设置为任意,否则服务器可能无法正常打开。 addrSer.sin_addr.S_un.S_addr INADDR_ANY; recv函数用来接收客户端传输的数据,其中…

游戏加速器哪个好用

对于游戏加速器,确实有很多不同的选择,每个加速器都有其独特的特点和优势。不过,我可以给你推荐一个最新上线的较受欢迎且评价较高的游戏加速器,供你参考: 深度加速器: 广泛支持:支持国内外众多…

RocketMQ批量消息

RocketMQ消息发送基本示例(推送消费者)-CSDN博客 RocketMQ消费者主动拉取消息示例-CSDN博客 RocketMQ顺序消息-CSDN博客 RocketMQ广播消息-CSDN博客 RocketMQ延时消息-CSDN博客 批量消息 批量消息是指将多条消息合并成一个批量消息,一次发送出去,原先的都是一次发一条.批量…

springboot四川旅游攻略分享互动平台-计算机毕业设计源码70222

摘 要 本研究基于Spring Boot框架开发了一款高效、可靠的四川旅游攻略分享互动平台。该系统主要面向管理员、普通用户和商家用户,涵盖了多个功能模块,包括旅游景点、旅游攻略、景点订单、酒店订单、酒店信息等。通过对系统需求的分析和设计,…

从数据规划到产品运营,拆解数据资产产品化的6大路径

数据资源入表对于企业数据资产的估值影响并不大,要想提升数据资产的整体价值,将数据资产进行产品化是更有效的途径之一。 那么,数据资产产品化的具体路径是怎样的? 在由WakeData惟客数据联合星光数智推出的直播栏目《星光对话》…

打破自闭症束缚:儿童康复案例揭秘

在自闭症的阴霾下,孩子们仿佛被困在一个无形的牢笼中,与外界的世界隔绝。然而,通过不懈的努力和科学的康复方法,许多孩子正在逐渐打破这一束缚,走向充满希望的未来。让我们一同走进几个令人鼓舞的儿童康复案例&#xf…

如何通过阿里云服务器部署hexo博客(超详细)

👏大家好!我是和风coding,希望我的文章能给你带来帮助! 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 📝点击 我的主页 还可以看到和风的其他内容噢&#x…

零基础入门转录组数据分析——机器学习算法之boruta(筛选特征基因)

零基础入门转录组数据分析——机器学习算法之boruta(筛选特征基因) 目录 零基础入门转录组数据分析——机器学习算法之boruta(筛选特征基因)1. boruta基础知识2. boruta(Rstudio)——代码实操2. 1 数据处理…

[Docker][Docker Volume]详细讲解

目录 1.什么是存储卷?2.为什么需要存储卷?1.数据丢失问题2.性能问题3.宿主机和容器互访不方便4.容器和容器共享不方便 3.存储卷分类1.volume docker 管理卷2.bind mount 绑定数据卷3.tmpfs mount 临时数据卷 5.管理卷 Volume1.创建卷1.-v 参数2.--mount …

《Milvus Cloud向量数据库指南》——向量数据库性价比大比拼:谁才是性能之王?

在分析这份向量数据库(Vector Databases)的性价比排名表格时,我们需要从多个维度深入探讨,包括但不限于硬件配置、价格/性能比(QP$,即每百万次查询所花费的价格)、数据集大小、查询类型(无标量过滤、低标量过滤、高标量过滤)以及不同服务提供商之间的比较。以下是一个…

微波治疗仪,美容仪,爆脂仪电源板

分享一下爆脂仪,美容仪,微波治疗仪电源板,高压输出为-2000v,驱动电流最大100mA,匹配磁控管功率输出100w

KubeBlocks v0.9 解读|最高可管理 10K 实例的 InstanceSet 是什么?

实例(Instance)是 KubeBlocks 中的基本单元,它由一个 Pod 和若干其它辅助对象组成。为了容易理解,你可以先把它简化为一个 Pod,下文中将统一使用实例这个名字。 InstanceSet 是一个通用 Workload API,负责…

python-进度条和计时器

from tqdm import tqdm import time# 设置任务的总步骤数 total_steps 100# 使用tqdm创建进度条 with tqdm(totaltotal_steps, unitstep) as pbar:# 开始计时start_time time.time()# 模拟任务步骤for i in range(total_steps):# 模拟每一步的工作负载time.sleep(0.1) # 假设…

C语言:自定义类型进阶(结构体、联合体、枚举)

自定义类型(结构体、联合体、枚举) 一、结构体(一)结构体的内存对齐1、结构体内存对齐规则(1)引子(2)offsetof 宏函数(3)内存对齐原理(4&#xff…

【HM】DevEco Studio提供Hot Reload(热重载)能力确实好用!帮助开发者更快速进行调试。但要注意以下几点?

​​ 仅支持开发者在真机上运行/调试运行: 1、运行时,选择带H标识的entry; 2、运行设备选择已连接的真机; 3、运行中修改了文件后,点击H标识,在真机即刻可见效果。 注意约束条件: 只支持真…

硬盘信息,电脑硬盘查看工具

硬盘信息,电脑硬盘查看工具 硬盘信息,电脑硬盘查看工具

FPGA开发——状态机的使用

一、概述 我们在使用FPGA进行开发的过程当中,实现一个东西用得最多的实现方法就是状态机的实现方法,用一句话总结就是万物皆可状态机,这和我们在学习Linux时常说的在Linux中万物都是文件差不多,这里就主要就是突出状态机的应用范…

Moretl 文件同步工具 1.1.0.3

永久免费: 前往Gitee最新版本 更新内容 Winform全部切换到.Net Framework 4.0. 更符合大部分的自动化设备. Web提供.Net Framework 4.0的运行时环境安装包 Web打开时,若当前IP为设备,直接显示设备信息 介绍 用途: 定时全量或增量 采集工控机,办公电脑文件以及日志.(SCADA,I…