当前位置: 首页 > news >正文

建立网站费用表武汉网站优化公司

建立网站费用表,武汉网站优化公司,WordPress 动态内容,长沙0731手机平台网报价引言 在日常活动中,我遇到过一个令人头疼的问题。测试使用的远程终端在第二天继续使用时可能就发生无法与外网通信的情况,往往连上终端后在拉取资源时才能发现。这导致每次使用前都需要手动检查网络状况,增加了不必要的麻烦。为了简化这一过…

引言

在日常活动中,我遇到过一个令人头疼的问题。测试使用的远程终端在第二天继续使用时可能就发生无法与外网通信的情况,往往连上终端后在拉取资源时才能发现。这导致每次使用前都需要手动检查网络状况,增加了不必要的麻烦。为了简化这一过程,我决定编写一个脚本,实现一键网络检测。
本文将介绍这样一个简单的 Shell 脚本,用于检查服务器内外网络的连接状态。该脚本不仅可以检查预设的内部和外部网络节点,还可以接受用户输入的额外 IP 地址进行检测。

脚本代码

#!/bin/bash# 颜色定义
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m' # No Color# 定义要测试的IP地址
INTERNAL_IP="127.0.0.1"
EXTERNAL_IP1="223.5.5.5"  # 阿里云公共DNS
EXTERNAL_IP2="8.8.8.8"    # 谷歌公共DNS# 获取当前服务器的主要IP地址
DEFAULT_ROUTE=$(ip route | grep default | awk '{print $3}')
DEFAULT_INTERFACE=$(ip route | grep default | awk '{print $5}')
SERVER_IP=$(ip addr show $DEFAULT_INTERFACE | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | head -n 1)# 获取本地网关
GATEWAY_IP1=$DEFAULT_ROUTE# 提示用户输入额外检测的IP地址
read -p "请输入需要额外检测的IP地址(留空则按回车跳过): " EXTRA_IP# 用数组存储测试结果
results=()# 函数:检查网络连接
check_connection() {local ip=$1local name=$2if ! [[ $ip =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; thenecho -e "${RED}输入的IP格式有误,不检测${NC}"results+=("$name: 失败 (IP: $ip)")returnfilocal ping_output=$(ping -c 4 $ip 2>/dev/null)local exit_code=$?local result=$(echo "$ping_output" | tail -1 | awk -F '/' '{print $5}')if [ $exit_code -ne 0 ] || [ -z "$result" ]; thenecho -e "${RED}无法连接到 ${name} (${ip})${NC}"results+=("$name: 失败 (IP: $ip)")elseecho -e "${GREEN}成功连接到 ${name} (${ip}) - 平均响应时间: ${result}ms${NC}"results+=("$name: 成功 (IP: $ip)")fi
}# 打印标题
echo -e "${GREEN}开始网络连接检查...${NC}"
echo -e "${GREEN}当前服务器IP地址: ${SERVER_IP}${NC}"# 检查额外指定的IP地址
if [ -n "$EXTRA_IP" ]; thencheck_connection $EXTRA_IP "额外检测的IP地址"
elseecho -e "${NC}未指定额外的IP地址,不检测${NC}"
fi# 检查内部网络
check_connection $INTERNAL_IP "内部网络"# 检查本地网关
check_connection $GATEWAY_IP1 "本地网关"# 检查外部网络(阿里云公共DNS)
check_connection $EXTERNAL_IP1 "外部网络 (阿里云)"# 检查外部网络(谷歌公共DNS)
check_connection $EXTERNAL_IP2 "外部网络 (谷歌)"# 结束语
all_success=true
for result in "${results[@]}"; doif [[ $result == *"失败"* ]]; thenall_success=falsebreakfi
doneif [ "$all_success" = true ]; thenecho -e "\n${GREEN}所有节点网络正常。${NC}"
elseecho -e "\n${RED}以下节点存在网络问题:${NC}"for result in "${results[@]}"; doif [[ $result == *"失败"* ]]; thenecho -e "${RED}${result}${NC}"fidone
fiecho -e "\n${GREEN}网络连接检查完成。${NC}"

主要模块详解

  1. 定义要测试的IP地址

    INTERNAL_IP="127.0.0.1"
    EXTERNAL_IP1="223.5.5.5"  # 阿里云公共DNS
    EXTERNAL_IP2="8.8.8.8"    # 谷歌公共DNS
    

    详解:通过常用的网络地址来检验服务器内外网的连通性。127.0.0.1 是本地环回地址,用于检查内部网络连接。223.5.5.58.8.8.8 分别是阿里云和谷歌的公共DNS服务器,用于检查外部网络连接。

  2. 获取当前服务器的主要IP地址

    DEFAULT_ROUTE=$(ip route | grep default | awk '{print $3}')
    DEFAULT_INTERFACE=$(ip route | grep default | awk '{print $5}')
    SERVER_IP=$(ip addr show $DEFAULT_INTERFACE | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | head -n 1)
    

    详解:这部分代码通过解析路由表和网络接口信息,获取当前服务器的主要IP地址。

    • DEFAULT_ROUTE 获取默认网关的IP地址。
    • DEFAULT_INTERFACE 获取默认网关使用的网络接口名称,为下一步获取主机IP提供便利。
    • SERVER_IP 获取主机IP。
  3. 构建功能函数:检查网络连接

    check_connection() {local ip=$1local name=$2if ! [[ $ip =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; thenecho -e "${RED}输入的IP格式有误,不检测${NC}"results+=("$name: 失败 (IP: $ip)")returnfilocal ping_output=$(ping -c 4 $ip 2>/dev/null)local exit_code=$?local result=$(echo "$ping_output" | tail -1 | awk -F '/' '{print $5}')if [ $exit_code -ne 0 ] || [ -z "$result" ]; thenecho -e "${RED}无法连接到 ${name} (${ip})${NC}"results+=("$name: 失败 (IP: $ip)")elseecho -e "${GREEN}成功连接到 ${name} (${ip}) - 平均响应时间: ${result}ms${NC}"results+=("$name: 成功 (IP: $ip)")fi
    }
    

    详解:这个函数负责检查给定IP地址的网络连接状态,并将结果记录到 results 数组中。

    • local ip=$1local name=$2:将传入的参数分别赋值给局部变量 ipname
    • if ! [[ $ip =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then:检查是否为标准IPv4地址格式。如果不正确,输出错误信息并返回。
    • local ping_output=$(ping -c 4 $ip 2>/dev/null):使用 ping 命令发送4次ICMP请求,并捕获输出。
    • local exit_code=$?:获取 ping 命令的退出状态码。
    • local result=$(echo "$ping_output" | tail -1 | awk -F '/' '{print $5}'):从 ping 输出中提取平均响应时间。
    • if [ $exit_code -ne 0 ] || [ -z "$result" ]; then:如果 ping 命令执行失败,exit_code 状态码不为0;如果 ping 命令没有返回有效的响应时间,result提取的平均响应时间将为空字符串;这两种结果都定义为失败,如果失败,输出错误信息并记录结果;否则,输出成功信息并记录结果。
  4. 整体结果判断

    all_success=true
    for result in "${results[@]}"; doif [[ $result == *"失败"* ]]; thenall_success=falsebreakfi
    doneif [ "$all_success" = true ]; thenecho -e "\n${GREEN}所有节点网络正常。${NC}"
    elseecho -e "\n${RED}以下节点存在网络问题:${NC}"for result in "${results[@]}"; doif [[ $result == *"失败"* ]]; thenecho -e "${RED}${result}${NC}"fidone
    fiecho -e "\n${GREEN}网络连接检查完成。${NC}"
    

    详解:根据 results 数组中的内容,输出检查结果和总结信息。

    • all_success=true:初始化一个布尔变量 all_success,表示所有节点是否都成功连接。
    • for result in "${results[@]}"; do:遍历 results 数组,检查是否有失败的记录。
    • if [ "$all_success" = true ]; then:如果所有节点都成功连接,输出成功信息;否则,输出失败的节点列表。
    • echo -e "\n${GREEN}网络连接检查完成。${NC}":输出检查完成的信息。

使用效果演示

[root@halo ~]# sh check_network.sh                             # 指定正常检测 
请输入需要额外检测的IP地址(留空则按回车跳过): 192.168.1.215   
开始网络连接检查...
当前服务器IP地址: 192.168.111.130
成功连接到 额外检测的IP地址 (192.168.1.215) - 平均响应时间: 1.020ms
成功连接到 内部网络 (127.0.0.1) - 平均响应时间: 0.083ms
成功连接到 本地网关 (192.168.111.2) - 平均响应时间: 0.588ms
成功连接到 外部网络 (阿里云) (223.5.5.5) - 平均响应时间: 16.654ms
成功连接到 外部网络 (谷歌) (8.8.8.8) - 平均响应时间: 53.729ms所有节点网络正常。
网络连接检查完成。[root@halo ~]# sh check_network.sh                             # 输入检测IP有误 
请输入需要额外检测的IP地址(留空则按回车跳过): hello
开始网络连接检查...
当前服务器IP地址: 192.168.111.130
输入的IP格式有误,不检测
成功连接到 内部网络 (127.0.0.1) - 平均响应时间: 0.073ms
成功连接到 本地网关 (192.168.111.2) - 平均响应时间: 0.406ms
成功连接到 外部网络 (阿里云) (223.5.5.5) - 平均响应时间: 16.665ms
成功连接到 外部网络 (谷歌) (8.8.8.8) - 平均响应时间: 53.524ms以下节点存在网络问题:
额外检测的IP地址: 失败 (IP: hello)
网络连接检查完成。[root@halo ~]# sh check_network.sh                             # 指定检测IP无法通信 
请输入需要额外检测的IP地址(留空则按回车跳过): 192.168.1.888
开始网络连接检查...
当前服务器IP地址: 192.168.111.130
无法连接到 额外检测的IP地址 (192.168.1.888)
成功连接到 内部网络 (127.0.0.1) - 平均响应时间: 0.068ms
成功连接到 本地网关 (192.168.111.2) - 平均响应时间: 0.857ms
成功连接到 外部网络 (阿里云) (223.5.5.5) - 平均响应时间: 14.097ms
成功连接到 外部网络 (谷歌) (8.8.8.8) - 平均响应时间: 47.028ms以下节点存在网络问题:
额外检测的IP地址: 失败 (IP: 192.168.1.888)
网络连接检查完成。

结语

通过这次尝试,我编写了一个简单的 Shell 脚本,用于检查服务器的网络连接状态。这个脚本帮助我在工作前快速检测服务器网络连接情况,及时发现和定位问题。希望这个小工具能为你在日常工作中带来便利。如果你有任何问题或建议,欢迎在评论区留言分享!希望这篇文章对你有所帮助!


http://www.yidumall.com/news/9268.html

相关文章:

  • 举报网站建设情况总结重庆百度推广开户
  • 网上做造价网站优化网站做什么的
  • 做网站的图片用什么格式中文域名
  • 做网站后台数据库建设石家庄网站建设
  • 网站怎么做能赚钱建立一个企业网站需要多少钱
  • 上海招聘网 58同城青岛seo整站优化
  • 网站制作完成后如何发布优化大师官网下载
  • 广州网站建设优化网络营销战略
  • 保定网站建设荥阳网站优化公司
  • 中国最厉害的网站建设公司广告软文是什么意思
  • 网站loading动画汕头seo公司
  • 微信公众平台制作网站万网域名管理平台
  • 惠州高端网站建设信息流优化师培训
  • asp做的网站如何更新交换友情链接是什么意思
  • 凡科建站可以做几个网站百度关键词指数查询
  • 大型网站技术架构核心原理与案例分析在百度怎么创建自己的网站
  • 河北提供网站建设公司电话网络推广的主要工作内容
  • 东莞网站开发建设seo培训赚钱
  • 网站建设客户需求表厦门网站外包
  • 怎么用织梦源代码做网站百度2022最新版本
  • 建设银行手机银行网站用户名是什么原因广告推广 精准引流
  • seo点击排名seo的理解
  • jsp网站开发介绍北京做百度推广的公司
  • 自己 做网站学什么 平面设计厦门seo外包公司
  • javaee是做网站的?指数基金有哪些
  • 商业网站建设案例笔记免费优化
  • 为什么用wp做网站优化方案
  • b2c电子商务网站建设方案最让顾客心动的促销活动
  • 建材做网站好吗站长工具查询域名
  • app商城开发价格外贸seo推广招聘