更改IP地址格式

时间:2016-01-28 08:15:55

标签: bash

有人可以帮我写一个bash脚本,用以下格式改变ip地址

192.168.1.0/27  

这种格式,在ip

旁边写掩码
192.168.1.0 255.255.255.224

我需要该脚本并计算它,将27更改为224,如果斜线为24将写入255.255.255.0等...

2 个答案:

答案 0 :(得分:0)

如果你有python 3.X(在我的情况下为3.4):

python3.4 -c "import ipaddress; print(ipaddress.ip_network('192.168.1.0/27').with_netmask)"

输出:

  

192.168.1.0/255.255.255.224

答案 1 :(得分:0)

也许这回答了这个问题:

IP="127.0.0.1/27"
REM=`echo "$IP" | sed 's/^.*\/\([0-9][0-9]\)/\1/'`
IP=`echo "$IP" | sed 's/\(^.*\)\/[0-9][0-9]/\1/'`

REM=`echo "$REM - 24" | bc`

MASKTAIL=0

while [[ "$REM" > 0 ]]
do
     MASKTAIL=`echo "$MASKTAIL + 2^(8-$REM)" | bc`
     REM=`echo "$REM - 1" | bc`
done

echo "$IP 255.255.255.$MASKTAIL"

有关前缀 - 掩码说明的信息,请参阅https://en.wikipedia.org/wiki/Subnetwork#Subnet_and_host_counts

Pd。:没有处理价值观< 24或> 31