搜索
Hi~登录注册
查看: 166|回复: 0

子网掩码计算 shell代码

[复制链接]

8113

主题

8130

帖子

1万

积分

极简大咖

Rank: 3Rank: 3

积分
10034
发表于 2021-6-9 15:09 | 显示全部楼层 |阅读模式
子网掩码计算 shell代码

网速是怎么计算的,我就不讲了. 为方便使用,我没有写成脚本,而是以命令的形式给出来. 用管道符方便扩展

1. 子网掩码 转 数字

只需要把下面的255.255.240 替换为你的子网掩码即可

echo 255.255.240.0 | sed 's/\./ + /g;s/255/8/g;s/254/7/g;s/252/6/g;s/248/5/g;s/240/4/g;s/224/3/g;s/192/2/g;s/128/1/g' | bc

例子:

如果你没得bc,sed之类的命令,得先安装哈

2. 数字(PREFIX) 转 子网掩码

只需要把下面的数字20替换为你的即可

这代码有待优化,太长了. 暂时不管,能用就行....

echo 20 | (read flagddcw1; tmp_ddcw_flag_net='';while [[ $flagddcw1 -gt 8 ]]; do flagddcw1=$[ $flagddcw1 - 8 ];tmp_ddcw_flag_net=${tmp_ddcw_flag_net}'8.'; done;echo ${tmp_ddcw_flag_net}${flagddcw1})  | awk -F . '{for(i=1; i<=4; i++) if($i ~ /^ *$/) $i=0}; {print $1 " " $2 " " $3 " " $4}' | (read flagddcw2;for i in $flagddcw2;do case $i in  0) echo -n 0.;; 1) echo -n 128.;; 2) echo -n 192.;; 3) echo -n 224.;; 4) echo -n 240.;; 5) echo -n 248.;; 6) echo -n 252.;; 7) echo -n 254.;; 8) echo -n 255.;; esac; done;) | (read flagddcw3;echo ${flagddcw3%.*})
例子:

其实可以转换为二进制,再用BC计算的. 但是可以穷举,我就偷懒了


回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 立即注册

返回顶部 返回列表