-
脚本代码分解
-
执行效果
=================================================================
我个人觉得我偏向于 喜欢极简的那种风格 所以我写代码 能达到目的的情况下 代码越简单越好。
今天说这个 ip提取 一样,越简单越好。
为什么要加个灵活呢,因为 精确度高 而且不分服务器,不怕因为ip多而提取错。
只需要用到 grep,egrep,awk 这3个命令即可。
如果有不懂的,可以参考:https://blog.csdn.net/cuichongxin/article/details/106051486
===================================================================
写进脚本之前,先执行:ifconfig | egrep '\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9])\>'
上面代码是筛选你全部ip的,如果有 输出内容,在开始写脚本。
===================================================================
因为 不同服务器可能 网段不同, 而且就算同一台服务器也可以有2个网段的ip,所以 使用固定脚本提取ip的话,很可能提取到的不是我们想要的,所以 变成接收用户参数的 提取,准确度更高,灵活性更广,我个人是这么觉得的!
#!/bin/bash
ip=ifconfig | egrep '\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9])\>'|grep $1 2> /dev/null |awk '{print $2}'
if [ $# -ne 1 ] ;then
echo “请在执行脚本后面输入一个ip网段参数,如:0.0”
exit
else
echo “你输入的网段为:”$1
echo “提取的ip为:”$ip
fi
其实 这代码还好,都是些很基础的内容,如果有哪里看不懂的去我博客shell分类 看看 shell脚本笔记。
特别需要说明的就是脚本开头变量中的 grep $1 2> /dev/null
这一句,原理性的我不说,2> 是错误输出到文件/dev/null(无底洞文件)中, 如果我不加这一句,运行脚本时候不加变量就会提示我(是提醒,不是报错),如图:
[root@control ~]$ifconfig | egrep ‘<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]).([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]).([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]).([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9])>’