判断两个IP是否在同一网段(SHELL实现)

这篇具有很好参考价值的文章主要介绍了判断两个IP是否在同一网段(SHELL实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实现代码文章来源地址https://www.toymoban.com/news/detail-841481.html

#!/bin/bash

# 函数:提取 CIDR 的网络地址和子网掩码
function extract_network() {
    echo $1 | awk -F '/' '{print $1}'
}

function extract_subnet() {
    echo $1 | awk -F '/' '{print $2}'
}

# 函数:将 IP 地址转换为二进制格式
function ip_to_binary() {
    local ip=$1
    local binary=""
    local IFS='.'
    local octets=($ip)
    for octet in "${octets[@]}"; do
        local bin_octet=""
        local num=$octet
        for (( i=0; i<8; i++ )); do
            bin_octet=$((num % 2))$bin_octet
            num=$((num / 2))
        done
        binary+=$bin_octet
    done
    echo $binary
}

# 函数:比较两个 IP 地址是否在同一网段
function same_network() {
    network1=$(extract_network $1)
    subnet1=$(extract_subnet $1)
    network2=$(extract_network $2)
    subnet2=$(extract_subnet $2)

    binary1=$(ip_to_binary $network1)
    binary2=$(ip_to_binary $network2)

    # 截取相同长度的二进制子串
    binary1=$(echo $binary1 | cut -c1-$subnet1)
    binary2=$(echo $binary2 | cut -c1-$subnet2)

    if [ "$binary1" == "$binary2" ]; then
        echo "两个 CIDR 在同一网段"
    else
        echo "两个 CIDR 不在同一网段"
    fi
}

# 测试
CIDR1="10.206.216.21/24"
CIDR2="10.206.217.10/24"
same_network $CIDR1 $CIDR2

到了这里,关于判断两个IP是否在同一网段(SHELL实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【华为OD机试】1035 - 判断两个IP是否属于同一子网

    🍂个人博客首页: KJ.JK   🍂专栏介绍: 华为OD机试真题汇总,定期更新华为OD各个时间阶段的机试真题,每日定时更新,本专栏将使用Python语言进行更新解答,包含真题,思路分析,代码参考,欢迎大家订阅学习

    2024年02月02日
    浏览(40)
  • 判断两个 IP 地址是否在同一个局域网中

    如何判断两个 IP 地址是否在同一个局域网中, 核心知识点是出于一个网络号, 主要是通过本身ip 与 所处的子网掩码进行 计算处理是否处于同一个局域网中(在 TCP/IP协议规则里面,IP地址与子网掩码做与运算)。

    2024年02月13日
    浏览(43)
  • 实现判断服务器是否有git并拉取代码的shell脚本

    判断当前服务器是否有git,没有的话使用yum install安装,然后切换至普通用户,创建目录,并且进入新创建的目录,git clone代码

    2024年02月10日
    浏览(35)
  • Java 快速判断一个 IP 是否在给定的网段内

    要在 Java 中判断一个 IP地址 是否在给定的网段内,可以使用 子网掩码 将 IP地址 和 子网掩码 进行 与操作 来提取网络地址,并将其与给定的子网地址进行比较。 下面的例子 由强大的 ChatGPT 提供 。 代码如下所示(子网掩码的计算可以截取字符串后,借助底部的算法进行获得

    2024年02月02日
    浏览(38)
  • 【Shell-HDFS】使用Shell脚本判断HDFS文件、目录是否存在

    本文主要讲述如何使用 Shell 脚本判断 HDFS 文件或目录是否存在,算是一个小技巧吧,这几天做 distcp 的时候用到的,因为要判断 HDFS 中是否存在某个目录。 Shell脚本测试: 1、测试路径是否存在。 2、测试目录是否存在。 3、测试文件是否存在。 4、测试路径大小是否大于0。

    2023年04月24日
    浏览(55)
  • Linux shell:脚本判断进程是否在运行

    一.命令说明 ps aux | grep 进程名 | grep -v grep :进程存在则输出信息,不存在则没输出 ps -ef | grep 进程名 | grep -v grep | wc -l :进程存在则输出行数(也就是数量),不存在则输出0 二.运行示例demo 方法一: 新建脚本:touch test.sh 添加如下内容: 赋予权限:chmod 777 test.sh 运行结果

    2024年02月11日
    浏览(42)
  • 【Linux | Shell 】- 判断文件是否存在、去掉文件后缀

    在Linux编程过程中, 设计到对文件的处理时常常需要判断某个文件是否存在,或者需要获取文件的前缀或文件后缀,这篇文章主要介绍在Linux的Shell编程或者在命令行与Shell交互时,如何判断文件是否存在、如何获取文件后缀,获取文件前缀。 将下面代码保存为 dirExist.sh ,运

    2024年02月08日
    浏览(41)
  • shell判断绝对路径是否符合规范(检验路径、验证路径)

    在这个脚本中,首先使用read命令获取用户输入的路径。然后,使用正则表达式来判断路径是否符合规范。正则表达式中, ^/ 表示路径必须以 / 开头; [a-zA-Z0-9_-]+/? 表示路径中可以包含数字、字母、下划线和连字符,以及一个可选的斜杠; + 表示这个组合可以重复多次,保证

    2023年04月08日
    浏览(24)
  • Java 判断两个IP段是否有交集

    一、背景介绍 在有些场景,需要判断IP段是否有交集,比如:配置一些设备的过滤规则,避免IP段重复配置,需要做IP段是否重叠的校验。 IP段有交集的场景有几种: 1)IP段1包含IP段2; 2)IP段2包含IP段1; 3)IP段1的起始IP与IP段2的结束IP相同,或者IP段1的结束IP与IP段2的起始

    2024年02月16日
    浏览(28)
  • Linux shell编程学习笔记44:编写一个脚本,将md5sum命令执行结果保存到变量中,进而比较两个文件内容是否相同

    在  Linux shell编程学习笔记42:md5sum https://blog.csdn.net/Purpleendurer/article/details/137125672?spm=1001.2014.3001.5501 中,我们提到编写一个在Linux系统下比较两个文件内容是否相同的脚本。 基本思路是: 其中有两个难点: 1.文件的md5值的获取 2.md5值的比较 对于第1个难点,我们的解决办法是

    2024年04月10日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包