shell 检测ip的合法性与检测网络掩码的合法性
有时我们需要检测IP输入的正确性与网络掩码的正确性,用shell脚本写的:
#验证ip地址的正确性
check_ip_format()
{
echo $1 | grep "^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$" > /dev/null
if [ $? = 1 ]; then
return 1
else
a=`echo $1 | awk -F. '{print $1}'`
b=`echo $1 | awk -F. '{print $2}'`
c=`echo $1 | awk -F. '{print $3}'`
d=`echo $1 | awk -F. '{print $4}'` if [ $a -ge 255 -o $a -le 0 -o $b -gt 255 -o $b -lt 0 -o $c -gt 255 -o $c -lt 0 -o $d -gt 255 -o $d -le 0 ]; then
return 2;
fi #验证是否组播地址
if [ $a -ge 224 -a $a -le 239 ]; then
return 3
fi #验证回环
if [ $a -eq 127 ]; then
return 4
fi fi
return 0
} #把数字转换为二进制数字
D2B()
{
num="$1"
d2b=`echo "obase=2;$num" | bc`
echo $d2b
} #验证掩码的正确性
check_mask_format()
{
echo $1 | grep "^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$" > /dev/null
if [ $? = 1 ]; then
return 1
fi a=`echo $1 | awk -F. '{print $1}'`
b=`echo $1 | awk -F. '{print $2}'`
c=`echo $1 | awk -F. '{print $3}'`
d=`echo $1 | awk -F. '{print $4}'` a=`D2B $a`
b=`D2B $b`
c=`D2B $c`
d=`D2B $d` for i in $a $b $c $d;do
[[ $i != 0 && ${#i} != 8 ]] && return 2
done
mask=$a$b$c$d
[[ "$mask" =~ ^1[1]*[0]*$ ]] || return 3 return 0
}
shell 检测ip的合法性与检测网络掩码的合法性的更多相关文章
- 计算机网络-将C网192.168.25.0划分四个子网,计算每个子网的有效IP地址范围和对应网络掩码
首先计算子网掩码: 将256/4=64,主机块大小64 2的6次方=64 根据主机数量计算出掩码的最后一个字节为11000000,用十进制表示掩码为255.255.255.192 由于IP地址结尾全为 ...
- Linux下检测IP地址冲突及解决方法
问题说明:在公司办公网内的一台物理机A上安装了linux系统(ip:192.168.9.120),在上面部署了jenkins,redmine,svn程序.由于是在办公网内,这台机器和同事电脑都是在同一 ...
- 检测ip和地区
获取当前位置所在省份城市和所用网络IP <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...
- 【IP】Linux中检测IP地址冲突
在Windows系统中,如果本地网络IP地址出现冲突,会出现图标提示. 在Linux系统中,并没有提供相关的功能,如果本地网络采用静态IP地址配置,出现比较奇怪的网络连接问题,如ssh连接复位,可以考 ...
- 在 shell 脚本获取 ip、数字转换等网络操作
在 shell 脚本获取 ip.数字转换等网络操作 ip 和数字的相互转换 ip转换为数字 :: function ip2num() { local ip=$1 local a=$(echo $ip ...
- web双机热备添加心跳检测ip的时候填了网关导致外网ip不能上网
web双机热备添加心跳检测ip的时候填了网关导致外网ip不能上网 1 连接 机器其他机器, 通过机房做的服务器的局域网,ssh到这台的局域网ip,删除网卡配置文件的网关哪一行,重启网卡. 2 如果没有 ...
- 正则表达式检测IP地址与端口号是否合法
正则表达式检测IP地址与端口号是否合法,代码如下: 正则表达式检测IP地址 public static bool CheckAddress(string s) { bool isLegal = fal ...
- JS框架_(AJAX)检测ip和地区
百度云盘 传送门 密码:l94p 实现效果: <!DOCTYPE html> <html> <head> <meta charset="utf-8 ...
- TCP/IP——内外网IP+子网掩码作用+PING(网络总结)
目录: 1.如何区分内网IP和外网IP? 保留字段 2.子网掩码是起什么作用的? 将DNS和IP异或,表示哪段起作用 3.ping到底起什么作用? ping本地.ping远程 下面针对上面三个问题分别 ...
随机推荐
- Android:使用ViewPager实现左右滑动切换图片 (简单版)
ViewPager,它是google SDk中自带的一个附加包的一个类, 可以使视图滑动. 步骤: 1.引入android-support-v4.jar包,在主布局里加入 <android.su ...
- Android 如何动态改变Actionbar上的item图标
1.Activity菜单机制 (与dialog类似) Activity有一套机制来实现对菜单的管理,方法如下: 1.public boolean onCreateOptionsMenu(Menu me ...
- JS中访问对象的属性
方式一: 对象名.属性名; 方式二: 对象名["属性名"]; ★注意:方式二中,属性名以字符串的形式出现在方括号中,这意味着通过方式二访问属性的话,可以实现“动态访问对象的 ...
- node.js模块之Buffer模块
http://nodejs.org/api/buffer.html Pure JavaScript is Unicode friendly but not nice to binary data. W ...
- strlen的C/C+++实现
2013-07-05 11:36:05 小结: 本函数给出了几种strlen的实现,有ugly implementation,也有good implementation.并参考标准库中的impleme ...
- C#创建XML文件并保存
随着XML的普及以及在动态WEB应用程序中大量应用,如何通过.NET创建,删除,修改XML文件变的也来也重要了.一个简单的概念是,XML文件跟大的文本文件并没有什么区别,同时它是先于.NET出现,很多 ...
- 基于Android Studio搭建Android应用开发环境
备注:电脑是windows xp系统 1. 安装JDK和环境变量设置 JDK是java development kit,Java JDK下载地址 http://www.oracle.com/t ...
- C#和.net之间的关系
What is the difference between C# and .NET? In addition to what Andrew said, it is worth noting that ...
- Eclipse搭建Struts框架,及一个简单的Struts例子
一.下载struts2.0.1 http://struts.apache.org/downloads.html,下载struts-2.0.1-all.zip,这个压缩包中包含了开发struts2所需的 ...
- 转 Android adb root权限
永久root带文件 因为开发需要,我经常会用到adb这个工具(Android Debug Bridge),我们都知道adb shell默认是没有root权限的,修改系统文件就很不方便了,adb pus ...