LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 839|回复: 6

求助!!如何写这样的脚本

[复制链接]
发表于 2005-5-26 16:34:42 | 显示全部楼层 |阅读模式
想写一个能把xxx.xxx.xxx.xxx/xx表示的IP转换为
IP:xxx.xxx.xxx.xxx
netmask:xxx.xxx.xxx.xxx
找不到好的思路,请大虾们帮忙
发表于 2005-5-26 18:38:01 | 显示全部楼层
IP改为二进制
192.168.0.1
11000000.10101000.00000000.00000001
[php]
#!/bin/sh
mask=192.168.0.1
for aa in 1 2 3 4
  do
  mask1=`echo $mask | gawk -F "." '{print $'"$aa"'}'`
for i in 1 2 3 4 5 6 7 8
  do
  data=`expr $mask1 % 2`
  mask1=`expr $mask1 / 2`
  if [ $data -eq 0 ]
    then
    STR="0"$STR
    else
    STR="1"$STR
  fi
done
printf "$STR"
if [ $aa -ne 4 ]
then
printf "."
fi
STR=""
done
[/php]

子网掩码改为二进制
24
11111111.11111111.11111111.00000000

[PHP]#!/bin/sh
mask=24
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
do
dd=`expr $mask - $i`
if [ $dd -gt -1 ]
then
  printf "1"
else
  printf "0"
fi
if [ `expr $i % 8` -eq 0 ]
then
  if [ $i -ne 32 ]
  then
   printf "."
  fi
fi
done
[/PHP]
回复 支持 反对

使用道具 举报

发表于 2005-5-26 19:44:49 | 显示全部楼层

  1. echo 192.168.1.1/24|awk -F/ '{printf("IP:%s\n",$1);printf("netmask:%s\n",$2)}'
复制代码


不知道这个符不符你的需要?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-27 10:29:06 | 显示全部楼层
多谢帮忙 我先试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-27 11:59:56 | 显示全部楼层
感谢帮忙,稍加修改已基本实现我的要求,十分感谢!!
回复 支持 反对

使用道具 举报

发表于 2005-5-27 14:29:07 | 显示全部楼层
why do not use bc ?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-27 15:00:27 | 显示全部楼层
我的本意是IP、NETMASK都是用十进制表示的,已经解决,多谢帮忙
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表