Shell脚本实现判断IP地址是否在一个ip段内代码分享

cat ipcalc.sh
#!/bin/bash
IP=$1
if [ -z $IP ]
then
echo -e “\e[31;42m sh ipcalc.sh IP \e[0m"
exit
fi
while read MASK
do
min=`/usr/bin/ipcalc $MASK|awk '/HostMin:/{print $2}'`
max=`/usr/bin/ipcalc $MASK|awk '/HostMax:/{print $2}'`
MIN=`echo $min|awk -F"." '{printf"%.0f\n",$1*256*256*256+$2*256*256+$3*256+$4}'`
MAX=`echo $max|awk -F"." '{printf"%.0f\n",$1*256*256*256+$2*256*256+$3*256+$4}'`
IPvalue=`echo $IP|awk -F"." '{printf"%.0f\n",$1*256*256*256+$2*256*256+$3*256+$4}'`
if [ "$IPvalue" -gt "$MIN" ] && [ "$IPvalue" -lt "$MAX" ]
then
echo -e “\e[31;42m $IP in ipset $MASK \e[0m”
exit
fi
done<ipset.conf

ipset.conf  格式

more ipset.conf
58.24.64.0/18
58.24.0.0/18
58.24.128.0/18
58.24.192.0/18
58.25.128.0/18
58.25.192.0/18
64.254.111.0/24

运行  sh ipcalc.sh    IP地址

效率 不高   哎 下次改成perl 试试

/usr/bin/ipcalc  这个不是系统自带的命令  是一个perl版本的

(0)

相关推荐

  • Shell脚本实现判断IP地址是否在一个ip段内代码分享

    cat ipcalc.sh #!/bin/bash IP=$1 if [ -z $IP ] then echo -e "\e[31;42m sh ipcalc.sh IP \e[0m" exit fi while read MASK do min=`/usr/bin/ipcalc $MASK|awk '/HostMin:/{print $2}'` max=`/usr/bin/ipcalc $MASK|awk '/HostMax:/{print $2}'` MIN=`echo $min|

  • shell脚本中使用iconv实现批量文件转码的代码分享

    在开发中,我们经常需要对N多文件编码进行更改,iconv只能对单文件的进行更改,怎么办呢?我们写一个shell脚本来解决这个问题. 例子一:使用shell脚本实现批量转码的操作. #!/bin/sh # convertCodeFilePath=$1 fromCode=$2 toCode=$3 for i in {1..1} do [ -f $convertCodeFilePath ] if [ $? -eq 0 ] then iconv -f $fromCode -t $toCode -c -o

  • C#判断给定IP地址是否在指定范围内的方法

    本文实例讲述了C#判断给定IP地址是否在指定范围内的方法.分享给大家供大家参考.具体分析如下: 比如给定一个ip段:127.0.0.1 ~ 127.0.0.255,我们想判断一个给定的ip地址是否在此段内,可以先将ip地址转换成整数,然后整数比较大小就很容易了. 例如: 127.0.0.1 = 2130706433 127.0.0.255 = 2130706687 判断: 127.0.1.253 = 2130706941 是否在此范围内,直接比较整数大小即可 将ip地址转换成整数: public

  • shell脚本之判断输入参数是否为整数值的实例

    在写脚本时,通常会有很多关于命令行参数,变量等的判断其是否存在或者类型是否正确.当判断一个从命令行接收到一个值,需要判断其是否为整型值时,有以下两种方法: 1.用shell命令使其与某个整型值进行计算,通过$?来判断其是否是一个整型值. flag=true read -p "please input a number:" num while $flag do expr $num + 0 &>/dev/null [ $? -eq 0 ] && flag=fa

  • php读取qqwry.dat ip地址定位文件的类实例代码

    实例如下: <?php // +---------------------------------------------------------------------- // | // +---------------------------------------------------------------------- // | // +---------------------------------------------------------------------- cla

  • 批处理bat设置固定IP地址和自动IP地址

    在我个人的使用经验中,我有不同的工作环境,比如公司和家里,公司要求固定IP,而家里则使用自动获取IP的方式,所以我就在网上找了这段代码,并且经过自己的修改,可以直接双击运行就可以,方便IP地址的切换. 这里主要使用netsh命令,不太明白的可以自己去百度查,这里就不列举它的用法了,具体代码如下: 固定IP和DNS.bat 复制代码 代码如下: @echo off cls color 0A Echo *************************************************

  • 使用淘宝ip地址库查ip的示例

    使用淘宝ip地址库的api查询ip地址信息. TaobaoIPHelper.cs 复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace LixinCommon{    /// <summary>    /// 淘宝IP地址库帮助类.    /// 提供查询ip地址信息功能.    /// 服务的主页:http://ip.taobao.com

  • 详解MySQL如何有效的存储IP地址及字符串IP和数值之间如何转换

    在看高性能MySQL第3版(4.1.7节)时,作者建议当存储IPv4地址时,应该使用32位的无符号整数(UNSIGNED INT)来存储IP地址,而不是使用字符串.但是没有给出具体原因.为了搞清楚这个原因,查了一些资料,记录下来. 相对字符串存储,使用无符号整数来存储有如下的好处: 节省空间,不管是数据存储空间,还是索引存储空间 便于使用范围查询(BETWEEN...AND),且效率更高 通常,在保存IPv4地址时,一个IPv4最小需要7个字符,最大需要15个字符,所以,使用VARCHAR(15

  • Ruby和Shell脚本实现判断成绩及格功能

    需求为:从键盘输入分数,以此来判断,0-59为不及格,打印"您没有及格,请下次努力!",60-79为及格,打印"您的成绩及格,请更加努力!",80-100为成绩良,打印"您的成绩为优秀,请再接再厉!",如果输入为0-100以外的分数,请打印"您的成绩为优秀,请再接再厉!" 如果采用ruby方式,代码比较精简,如下所示: 复制代码 代码如下: #!/usr/bin/ruby print "请输入您的分数: "

  • JS中IP地址与整数相互转换的实现代码

    主要用于在js判断用户输入的一个ip段是否合法,如:192.168.1.11-192.168.1.134 实现代码一: function ipToNumber(ip) { var num = 0; if(ip == "") { return num; } var aNum = ip.split("."); if(aNum.length != 4) { return num; } num += parseInt(aNum[0]) << 24; num +=

随机推荐