nam*_*sjj 2 ip bash netmask subnet
在 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
Run Code Online (Sandbox Code Playgroud)
用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))"
Run Code Online (Sandbox Code Playgroud)
例子: ./script.sh 140.179.220.200 255.255.224.0
输出:
网络:140.179.192.0 广播:140.179.223.255 第一个 IP:140.179.192.1 最后一个 IP:140.179.223.254
| 归档时间: |
|
| 查看次数: |
5362 次 |
| 最近记录: |