gpt4 book ai didi

bash - 给定 IP 地址和网络掩码,如何使用 bash 计算子网范围?

转载 作者:行者123 更新时间:2023-11-29 09:37:35 25 4
gpt4 key购买 nike

在 bash 脚本中,我有一个像 140.179.220.200 这样的 IP 地址和一个像 255.255.224.0 这样的网络掩码。我现在要计算网络地址 (140.179.192.000)、第一个可用的主机 IP (140.179.192.1)、最后一个可用的主机 IP (140.179.220.254) 和广播地址 (140.179.223.255)。我能够找到一种干净的方法来处理下面的网络地址。我能够手动进行子网计算,但主要是难以将其转换为 bash 脚本。提前致谢

$ IFS=. read -r i1 i2 i3 i4 <<< "192.168.1.15"
$ IFS=. read -r m1 m2 m3 m4 <<< "255.255.0.0"
$ printf "%d.%d.%d.%d\n" "$((i1 & m1))" "$((i2 & m2))" "$((i3 & m3))" "$((i4 & m4))"
192.168.0.0

最佳答案

用bash计算网络和广播:

#!/bin/bash

ip=$1; mask=$2

IFS=. read -r i1 i2 i3 i4 <<< "$ip"
IFS=. read -r m1 m2 m3 m4 <<< "$mask"

echo "network: $((i1 & m1)).$((i2 & m2)).$((i3 & m3)).$((i4 & m4))"
echo "broadcast: $((i1 & m1 | 255-m1)).$((i2 & m2 | 255-m2)).$((i3 & m3 | 255-m3)).$((i4 & m4 | 255-m4))"
echo "first IP: $((i1 & m1)).$((i2 & m2)).$((i3 & m3)).$(((i4 & m4)+1))"
echo "last IP: $((i1 & m1 | 255-m1)).$((i2 & m2 | 255-m2)).$((i3 & m3 | 255-m3)).$(((i4 & m4 | 255-m4)-1))"

示例:./script.sh 140.179.220.200 255.255.224.0

输出:

network:   140.179.192.0broadcast: 140.179.223.255first IP:  140.179.192.1last IP:   140.179.223.254
  • IP 和掩码之间的按位与给出网络地址。
  • 网络地址和反向掩码之间的按位或给出广播地址。

关于bash - 给定 IP 地址和网络掩码,如何使用 bash 计算子网范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43876891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com