正则表达式通用匹配ip地址及主机检测
在使用正则表达式匹配ip地址时如果不限定ip正确格式,一些场景下可能会产生不一样的结果,比如ip数值超范围,ip段超范围等,在使用正则表达式匹配ip地址时要注意几点:
1,字符界定:使用 \<匹配 字符 \> 或 \b 匹配字符 \b ;这个作用是限定ip的长度或位数
2. 数值范围匹配 :[0-9] ,使用分组的方式,匹配字段
3. ip段的划分 :按照匹配规则一个正确的ip地址可以划分为如下几个段:
0-9段,10-99段,100-199段,200-254段;
正则表达式匹配如下:
grep -o -E "\b(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\b"
[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\.){3}
#这是匹配ip的第一段数值,包括 . ,这个匹配中可以匹配任意一个254以内开头的地址段,并且重复匹配三次
脚本中测试
#!/bin/bash
echo "$1" | grep -o -E "\b(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\b"
[ $? -ne ] && { echo "$1 addr error"; exit ; }
ping -c -w $ &> /dev/null && echo "$1 host is up !" || echo "$1 host is down !"
#正确测试
[root@yufu home]# ./hostping.sh 192.168.214.2
192.168.214.2
192.168.214.2 host is up !
#错误测试
[root@yufu home]# ./hostping.sh 192.442.214.666
192.442.214.666 addr error
这个匹配方式在centos6和centos7中通用,还有一种简单粗暴的方法匹配ip,但不是非常精确,可能会匹配到其他内容:
[root@yufu home]# ifconfig | egrep -o "[0-9.]{7,}"
192.168.214.187
192.168.214.255
255.255.255.0
#匹配后的ip地址默认都在第一行,可以head指令截取
127.0.0.1
255.0.0.0
因此可以在此基础上再写一个可以实现自定检测ipd端和检查输入的正确性的主机检测脚本;
#!/bin/bash
trap "exit"
read -p "Input addr eg: 192.168.214 : " IP
echo "$IP" | grep -o -E "\b(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\.){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\b"
[ $? -eq ] || { echo "$IP addr error" ; exit ; }
Ipaddr=$IP
for Host in $(seq )
do
ping -c -w $IP.$Host &>/dev/null
if [ $? -eq ];then
echo -e "\033[32;1m$IP.$Host is up! \033[0m"
else
echo -e "\033[;31m$IP.$Host is down!\033[0m"
fi
done
检测测试
[root@yufu home]# ./hostping.sh
Input addr eg: 192.168. : 172.16.
172.16.
172.16.0.1 is up!
172.16.0.2 is down!
172.16.0.3 is down!
172.16.0.4 is down!
172.16.0.5 is down!
172.16.0.6 is down!
172.16.0.7 is down!
172.16.0.8 is down!
172.16.0.9 is down!
172.16.0.10 is down!
172.16.0.11 is down!
172.16.0.12 is down!
172.16.0.13 is down!
172.16.0.14 is down!
172.16.0.15 is down!
172.16.0.16 is down!
172.16.0.17 is down!
172.16.0.18 is down!
172.16.0.19 is down!
172.16.0.20 is down!
172.16.0.21 is down!
正则表达式通用匹配ip地址及主机检测的更多相关文章
- python中利用正则表达式匹配ip地址
现在有一道题目,要求利用python中re模块来匹配ip地址,我们应如何着手? 首先能想到的是ip地址是数字,正则表达式是如何匹配数字的呢? \d或[0-9] 对于这个问题,不要一下子上来就写匹配模式 ...
- Apache服务(基于IP地址,主机名,端口号)
安装Apache服务程序 需要注意apache服务程序的软件包名称叫做httpd,因此直接执行yum install apache则是错误的. [root@liuxuanke-hbza ~]# yum ...
- Java如何从IP地址查找主机名?
在Java编程中,如何从IP地址查询出主机名? 以下示例显示了如何通过net.InetAddress类的InetAddress.getByName()方法将指定的IP地址查到主机名称. package ...
- Java如何获取本地计算机的IP地址和主机名?
在Java编程中,如何获取本地计算机的IP地址和主机名? 以下示例显示如何使用InetAddress类的getLocalAddress()方法获取系统的本地IP地址和主机名. package com. ...
- python匹配ip地址
ip地址是用3个'.'号作为分隔符,分割4个数字,每个数字的取值在[0,255],一般日志文件中的ip地址都是有效的ip地址,不需要我们再去验证,因此,若从日志文件中提取ip,那么可以简单写成这样: ...
- Java 实例 - 获取本机ip地址及主机名
package guyu.day0824; import java.net.InetAddress; /** * @Author: Fred * @Date: 2020/8/24 09:39 */ p ...
- [置顶] 正则表达式应用:匹配IP地址
都知道iP地址有四个数值,三个点号组成.三个数值的具体范围为0到255,为了使用正则表达式匹配就必须分析IP地址的组成 1先分析数值,2再组合数值和点号 1先分析数值 IP地址的数字范围从0到255, ...
- 使用正则表达式匹配IP地址
IP地址分为4段,以点号分隔.要对IP地址进行匹配,首先要对其进行分析,分成如下部分,分别进行匹配: 第一步:地址分析,正则初判 1.0-9 \d 进行匹配 2.10-99 [1-9]\d 进行匹 ...
- python 正则表达式匹配IP地址
一.实验环境 1.Windows7x64_SP1 2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 3.pyinstaller3.0 二.实验目的 从tex ...
随机推荐
- Codeforces Round #364 (Div. 2) C
Description Sergei B., the young coach of Pokemons, has found the big house which consists of n flat ...
- win10系统添加照片查看器(win7版)
很多人不习惯win10的照片查看器,还是比较怀念win7版本的照片查看器,通过以下两种方法可以在win10图片上点击右键时,"打开方式"中重现"Windows照片查看器& ...
- py---------网络编程
一.软件开发架构 我们了解的涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq.微信.网盘.优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度.知乎.博客园等使用浏览器访 ...
- 错误:正在解析文件 '/var/lib/dpkg/updates/0004'
sudo rm /var/lib/dpkg/updates/* sudo apt-get update
- CodeForces - 93B(贪心+vector<pair<int,double> >+double 的精度操作
题目链接:http://codeforces.com/problemset/problem/93/B B. End of Exams time limit per test 1 second memo ...
- c#异步Begininvoke使用随笔
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- UITableViewCellStyle 四种样式
四种样式如下:
- ElasticSearch安装(以Docker的方式)
拉取docker镜像: docker pull docker.elastic.co/elasticsearch/elasticsearch:6.1.1 命令行方式启动 测试环境 :docker ...
- smarty基本用法
简介: 1.smarty语法:它是php的一种模板引擎 它的设计特点是:业务逻辑与显示逻辑分离 Smarty的标签都是使用定界符{ }括起来注释:{* 我是Smarty的注释内容 *} <u ...
- EasyUI Combobox 的 onChange,onSelect,onClick 事件
EasyUI 中 Combobox 选项发生改变时会触发 onChange,onSelect,onClick,3 个事件.最近要做一个级联的 Combo 菜单,类似于选择地址时让用户填写省,市,区的菜 ...