SHELL脚本之基础网络检查


aihuafeng66t
克里斯蒂亚诺诺 2024-01-11 17:49:48 66296 赞同 0 反对 0
分类: 资源 标签: 运维
SHELL脚本之基础网络检查

、需求说明

  作为一名运维工程师,我们经常需要进行系统之间的联调或者系统服务不可用时的故障排查。当出现系统服务无法访问的时候我们需要定位故障原因,可能是网络中断、可能是DNS地址未配置或者配置错误、也可能是服务不可用。网络基础检查shell脚本用于基础网络检查和服务连通性检查。其中基础网络检查主要通过ping验证到网关、公网地址、域名等的通断性;服务连通性检查主要通过telnet服务验证系统服务端口是否存活。

二、脚本内容

#!/bin/bash
#script name: network_check.sh
#author: 524627027@qq.com
#version: v1
#description: 此脚本用于检测Linux系统网络状态

#参数定义
localip="127.0.0.1"
gatewayip=""
dnsip=""

function myping(){
  ping $1 -c3
  if [ $? -eq 0 ];
  then
    return 1;
  else
    return 0
  fi
}

function mytelnet(){
  s=`which telnet |grep "no telnet in"`
  if [ -z "$s" ];then
    `telnet $1 $2` > tt.txt
        s=`cat tt.txt |grep "Escape character is '^]'"`
        if [ -n "$s" ];then
          echo -e "\e[32m 这个主机到 $1 主机的 $2 服务网络可达\e[0m"
        else
          echo -e "\e[31m 这个主机到 $1 主机的 $2 服务网络不可达\e[0m"
        fi
  else
        echo "需要安装telnet客户端服务"
        yum install -y telnet
#       mytelnet()
  fi
}

function servicecheck(){
  ssh $1 -p $2 -v &> tc.txt
  s=`cat tc.txt |grep "Connection refused"`
  if [ -z "$s" ];then
        echo -e "\e[32m 这个主机到 $1 主机的 $2 服务网络可达\e[0m"
  else
        echo -e "\e[31m 这个主机到 $1 主机的 $2 服务网络不可达\e[0m"
  fi
}

#获取基本信息
function baseinf_get(){
#获取本机IP地址
localip=`ifconfig |grep netmask |grep -v 127.0.0.1 |awk '{ print $2 }'`

#获取网关IP地址
gatewayip=`route -n |grep "0.0.0.0" |awk '{ print $2 }' |grep -v "0.0.0.0"`

#获取DNS地址
dnsip=`cat /etc/resolv.conf |grep nameserver |awk '{ print $2 }'`

echo -e "本服务器的网卡IP地址为:\n\e[32m $localip \e[0m"
echo -e "本服务器的网关IP地址为:\n\e[32m $gatewayip \e[0m"
echo -e "本服务器的DNS IP地址为:\n\e[32m $dnsip \e[0m"
}

#检测主机到自己网卡的网络连通性
function netcardcheck(){
myping $localip
if [ $? -eq 1 ];
then
  echo -e "\e[32m 这个主机到网卡 $localip 网络可达\e[0m";
else
  echo -e "\e[31m 这个主机到网卡 $localip 网络不可达\e[0m"
fi
}

#检测主机到网关的网络连通性
function gatewaycheck(){
myping $gatewayip
if [ $? -eq 1 ];
then
  echo -e "\e[32m 这个主机 $localip 到网关 $gatewayip 网络可达\e[0m";
else
  echo -e "\e[31m 这个主机 $localip 到网关 $gatewayip 网络不可达\e[0m"
fi
}

#检测主机到互联网公网IP的连通性
function internetipcheck(){
internetip=114.114.114.114
myping $internetip
if [ $? -eq 1 ];
then
  echo -e "\e[32m 这个主机 $localip 到公网IP地址 $internetip 网络可达\e[0m";
else
  echo -e "\e[31m 这个主机 $localip 到公网IP地址 $internetip 网络不可达\e[0m"
fi
}

#检测主机到互联网域名的连通性
function domaincheck(){
domainname=www.baidu.com
myping $domainname
if [ $? -eq 1 ];
then
  echo -e "\e[32m 这个主机 $localip 到 $domainname 域名网络可达\e[0m";
else
  echo -e "\e[31m 这个主机 $localip 到 $domainname 域名网络不可达\e[0m"
fi
}

#检测主机到指定网络的连通性,通过参数输入
function myservicecheck(){
read -p "请输入需要检测的主机地址(格式样例:192.168.0.100):" a
read -p "请输入需要检测的服务端口(格式样例:80),如果无请直接输入回车:" b
if [ -z "$b" ];
then
  myping a
  if [$? -eq 1 ];
  then
    echo -e "\e[32m 这个主机 $localip 到公网IP地址 $a 网络可达\e[0m";
  else
    echo -e "\e[31m 这个主机 $localip 到公网IP地址 $a 网络不可达\e[0m"
  fi
else
  servicecheck $a $b
fi
}

function main(){
  echo -e "1、基础网络检查\n2、指定服务网络连通性检查\n3、退出"
  read -p "你的选择为:" opt
  case $opt in
    1)
          baseinf_get
          netcardcheck
          gatewaycheck
          internetipcheck
          domaincheck
    ;;
    2)
          myservicecheck
    ;;
        3)
      exit
        ;;
    *)
      echo "请根据选择输入1,2,3,其他输入无效!"
    ;;
  esac
}

main

三、使用示例

1、检查网络检查

[root@test1 ~]# sh network_check.sh
1、基础网络检查
2、指定服务网络连通性检查
3、退出
你的选择为:1
本服务器的网卡IP地址为:
192.168.0.124
本服务器的网关IP地址为:
192.168.0.1
本服务器的DNS IP地址为:
211.142.211.124
PING 192.168.0.124 (192.168.0.124) 56(84) bytes of data.
64 bytes from 192.168.0.124: icmp_seq=1 ttl=64 time=0.131 ms
64 bytes from 192.168.0.124: icmp_seq=2 ttl=64 time=0.063 ms
64 bytes from 192.168.0.124: icmp_seq=3 ttl=64 time=0.062 ms

— 192.168.0.124 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.062/0.085/0.131/0.033 ms
这个主机到网卡 192.168.0.124 网络可达
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=255 time=1.96 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=255 time=1.87 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=255 time=1.70 ms

— 192.168.0.1 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 1.707/1.846/1.961/0.110 ms
这个主机 192.168.0.124 到网关 192.168.0.1 网络可达
PING 114.114.114.114 (114.114.114.114) 56(84) bytes of data.
64 bytes from 114.114.114.114: icmp_seq=1 ttl=88 time=30.0 ms
64 bytes from 114.114.114.114: icmp_seq=2 ttl=69 time=29.5 ms
64 bytes from 114.114.114.114: icmp_seq=3 ttl=66 time=29.5 ms

— 114.114.114.114 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 29.510/29.715/30.074/0.254 ms
这个主机 192.168.0.124 到公网IP地址 114.114.114.114 网络可达
PING www.a.shifen.com (183.232.231.174) 56(84) bytes of data.
64 bytes from localhost (183.232.231.174): icmp_seq=1 ttl=55 time=17.2 ms
64 bytes from localhost (183.232.231.174): icmp_seq=2 ttl=55 time=17.0 ms
64 bytes from localhost (183.232.231.174): icmp_seq=3 ttl=55 time=16.9 ms

— www.a.shifen.com ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2007ms
rtt min/avg/max/mdev = 16.975/17.092/17.258/0.193 ms
这个主机 192.168.0.124 到 www.baidu.com 域名网络可达
在这里插入图片描述

2、服务检查

[root@test1 ~]# sh network_check.sh
1、基础网络检查
2、指定服务网络连通性检查
3、退出
你的选择为:2
请输入需要检测的主机地址(格式样例:192.168.0.100):192.168.0.132
请输入需要检测的服务端口(格式样例:80),如果无请直接输入回车:8085
这个主机到 192.168.0.132 主机的 8085 服务网络可达
[root@test1 ~]# sh network_check.sh
1、基础网络检查
2、指定服务网络连通性检查
3、退出
你的选择为:2
请输入需要检测的主机地址(格式样例:192.168.0.100):192.168.0.132
请输入需要检测的服务端口(格式样例:80),如果无请直接输入回车:8086
这个主机到 192.168.0.132 主机的 8086 服务网络不可达
在这里插入图片描述



如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
克里斯蒂亚诺诺L1
粉丝 0 资源 831 + 关注 私信
最近热门资源
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD  40
统信uos安装mysql的实例参考  31
分享解决宏碁电脑关机时自动重启的方法  30
在银河麒麟高级服务器操作系统V10SP3中,需要将默认shell类型修改为csh。  29
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作  28
统信uosboot区分未挂载导致更新备份失败  27
格之格打印机dp3300系列国产系统uos打印机驱动选择  25
以openkylin为例编译安装内核  23
最近下载排行榜
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD 0
统信uos安装mysql的实例参考 0
分享解决宏碁电脑关机时自动重启的方法 0
在银河麒麟高级服务器操作系统V10SP3中,需要将默认shell类型修改为csh。 0
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作 0
统信uosboot区分未挂载导致更新备份失败 0
格之格打印机dp3300系列国产系统uos打印机驱动选择 0
以openkylin为例编译安装内核 0
作者收入月榜
1

prtyaa 收益400.53元

2

zlj141319 收益237.46元

3

哆啦漫漫喵 收益231.42元

4

IT-feng 收益219.81元

5

1843880570 收益214.2元

6

风晓 收益208.24元

7

777 收益173.07元

8

Fhawking 收益106.6元

9

信创来了 收益106.03元

10

克里斯蒂亚诺诺 收益91.08元

请使用微信扫码

添加我为好友,拉您入交流群!

请使用微信扫一扫!