免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6502 | 回复: 19
打印 上一主题 下一主题

[其他] 如何用shell把子网掩码由"255"的形式转换成十进制形式 [复制链接]

论坛徽章:
1
狮子座
日期:2013-12-05 16:04:37
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-27 12:09 |只看该作者 |倒序浏览
比如:
255.255.0.0 转换后 变成 16.

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
2 [报告]
发表于 2013-11-27 12:29 |只看该作者
本帖最后由 关阴月飞 于 2013-11-27 12:48 编辑

回复 1# mcumsigscr

简单的做法,但如果掩码输入错误输出也将错误:
    ipcalc -p 0.0.0.1 255.255.0.0 |awk -F= '{print $2}'

or
返回0说明掩码输入不正确:
echo 255.255.0.0 |awk -F. -vOFS=\; 'NF+=0{print "obase=2;"$0}'|bc |paste -s -d '' |grep -E '^1[1]*[0]*$' |grep -o '1' |wc -l

论坛徽章:
1
狮子座
日期:2013-12-05 16:04:37
3 [报告]
发表于 2013-11-27 13:07 |只看该作者
回复 2# 关阴月飞


    多谢多谢:)

论坛徽章:
1
狮子座
日期:2013-12-05 16:04:37
4 [报告]
发表于 2013-11-27 13:37 |只看该作者
关阴月飞 发表于 2013-11-27 12:29
回复 1# mcumsigscr

简单的做法,但如果掩码输入错误输出也将错误:


还想请教个问题,怎么从16转成:255.255.0.0呢?

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
5 [报告]
发表于 2013-11-27 13:41 |只看该作者
回复 4# mcumsigscr


    ipcalc -m  1.1.1.1/16 |awk -F= '{print $2}'

论坛徽章:
1
狮子座
日期:2013-12-05 16:04:37
6 [报告]
发表于 2013-11-27 13:44 |只看该作者
回复 5# 关阴月飞


没有ipcalc这个命令。。。:(

   

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
7 [报告]
发表于 2013-11-27 13:45 |只看该作者
回复 6# mcumsigscr


    什么环境? linux的话装一下initscripts这个包就有了。

论坛徽章:
1
狮子座
日期:2013-12-05 16:04:37
8 [报告]
发表于 2013-11-27 13:47 |只看该作者
回复 7# 关阴月飞


好的 我试试 我的系统是centos的。

   

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
9 [报告]
发表于 2013-11-27 14:29 |只看该作者
本帖最后由 这个冬天不冷 于 2013-11-27 14:30 编辑

回复 8# mcumsigscr
centos更简单,直接 yum
  1. [root@everIover ~]# yum install initscripts
  2. Loaded plugins: fastestmirror, refresh-packagekit, security
  3. Loading mirror speeds from cached hostfile
  4. * base: mirrors.yun-idc.com
  5. * extras: mirrors.btte.net
  6. * updates: mirrors.yun-idc.com
  7. Setting up Install Process
  8. Package initscripts-9.03.38-1.el6.centos.2.i686 already installed and latest version
  9. Nothing to do
复制代码
参照 大神的

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
10 [报告]
发表于 2013-11-27 14:39 |只看该作者
本帖最后由 关阴月飞 于 2013-11-27 15:24 编辑

回复 6# mcumsigscr


    用awk也行:
  1. awk '$0>0&&$0<33{for(i=0;i++<4;){if(i<=int($0/8))printf i<4?"255.":"255\n";else if (i==int($0/8)+1 && $0%8)printf i<4?2**(8-$0%8)".":2**(8-$0%8)"\n";else printf i<4?0".":0"\n"}}' <<<16
复制代码
代码考虑不周:改成下面的:
  1. awk '$0>0&&$0<33{for(i=0;i++<4;){if(i<=int($0/8))printf i<4?"255.":"255\n";else if (i==int($0/8)+1 && $0%8){for(n=0;n++<$0%8;)a+=2**(8-n);printf i<4?a".":a"\n"}else printf i<4?0".":0"\n"}}' <<<16
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP