获取linux主机的IP地址


问题描述

在很多软件配置过程中,都需要设置ID信息,通常我选择使用系统配置的eth0网卡的IP地址信息,比如salt-minion-id,在通过cobbler批量安装操作系统时,会给操作系统自定义或者DHCP配置IP地址信息,然后在之后的配置过程中,如何将该IP地址取出来,配置到minion_id文件中,也是一个小问题。

正则表达式

最近看了一下正则表达式,想通过正则表达式的方式,从命令行中,获取到IP地址信息。不带任何其他信息的。

  1. 获取IP地址信息

通过ip addr show eth0和ifconfig eth0,查看eth0网卡信息。

[root@salt-master ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:90:36:9d brd ff:ff:ff:ff:ff:ff
inet 192.168.64.131/24 brd 192.168.64.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe90:369d/64 scope link
valid_lft forever preferred_lft forever

我们要获取的是inet地址,192.168.64.131,只是一个地址,不需要/24的掩码和其他信息。

  1. sed截取

主要的实现方式是,通过sg替换,将不需要的内容匹配出来,然后替换为空,然后保留最后的信息。

sed -n 取消默认输出,只显示sed之后的结果

sed 's###g' 查找,替换

sed p 打印编辑后的内容, 's###gp'

[root@salt-master ~]# ip addr show eth0|sed -n 's#.*inet ##gp'
192.168.64.131/24 brd 192.168.64.255 scope global eth0

匹配inet之前的部分,然后全部替换为空,然后打印出来

上面就已经截取出来IP地址部分了,但是后面还有一些信息不需要。再匹配一次

[root@salt-master ~]# ip addr show eth0|sed -n 's#.*inet ##gp'|sed -n 's#/.*##gp'
192.168.64.131

匹配掩码/和后面所有内容,然后替换为空,打印出来,这样就显示出来IP地址了。

  1. sed后向引用

sed有一个方法,后向引用,将sed匹配的内容,在替换部分打印出来,用的是正则表达式中的()。以上么截取IP地址为例,通过后向引用,获取IP地址,具体如下:

[root@salt-master ~]# ip addr show eth0|sed -nr 's#.*inet (.*)/.*#\1#gp'
192.168.64.131

这个解释起来比较简答,首先是获取eth0的全部输出,然后匹配 .*inet (.)/. ,这就匹配到第二行字段,然后括号里面匹配到的是IP地址信息,然后通过后向引用\1,直接展示出来。

如果括号比较多,可以以此类推,\2 \3这么展示。

其实获取IP地址还有很多简单的方法,比如直接文件中进行截取等等。

获取系统的IP地址的更多相关文章

  1. java获取本机IP地址

    转载自:http://blog.csdn.net/thunder09/article/details/5360251 在网上找了几个用java获取本机IP地址的代码,发现都少都有些不完美,自己整理了一 ...

  2. python获取本机IP地址

    方法一 通常使用socket.gethostname()方法即可获取本机IP地址,但有时候获取不到(比如没有正确设置主机名称) import socket #获取计算机名称hostname=socke ...

  3. dedecms自定义表单提交获取时间跟ip地址

    相信大家在用织梦做网站的时候都用过自定义表单做留言,但是如何查看客户什么时间填写的表单,和客户的IP地址呢? 我在网上找了很多JS文件,但太繁琐了,后来我注意到一个细节,每次我登陆后台,织梦系统都会记 ...

  4. 如何根据HttpServletRequets获取用户真实IP地址

    最近的一个项目的某个功能获取用户的ip地址,添加用户的系统使用记录. 我发现当我直接使用getRemoteAddr()方法从HttpServletRequet中获取用户的ip时,获取到的是服务器的ip ...

  5. 获取本地的IP地址(内网)

    方法一 public static String getLocalIpAddress() { try { for (Enumeration<NetworkInterface> en = N ...

  6. 获取本机IP地址

    这里有两种方法: //获取本机IP - (NSString *)localIPAddress { NSString *localIP = nil; struct ifaddrs *addrs; ) { ...

  7. 关于是用dotnet获取本机IP地址+计算机名的方法

    印象中在maxscript帮助文档里找到过方法,但是当时没记下来.只能通过dotnet实现了. 如果电脑有无线网卡和本地连接,可能会出现乱码,也问了写dotnet的朋友,提供了一些思路,不过最终还是使 ...

  8. 【知识积累】服务器端获取客户端的IP地址(当客户端调用由Axis开发的WebService)

    一.前言 由于项目中一个小的模块需要获取客户端的IP地址以保证安全调用webservice接口,项目中客户端使用C#编写,服务器端使用Java编写,服务器端与客户端采用Axis开发的WebServic ...

  9. CDN下nginx获取用户真实IP地址

    随着nginx的迅速崛起,越来越多公司将apache更换成nginx. 同时也越来越多人使用nginx作为负载均衡, 并且代理前面可能还加上了CDN加速,但是随之也遇到一个问题:nginx如何获取用户 ...

随机推荐

  1. S32K142学习记录_SDK手动导入

    这几天和一位工程师讨论ADC+PDB学到了很多,当然很多的时候都是我在听, 毕竟新手,顺便其中提出自己的疑问,讨论会让你学到很多 有空会将讨论整理出来 因为demo板还没有到,只能看着大佬的程序对着手 ...

  2. [Objective-C] Xcode中常用的快捷键操作与插件

    古人云“工欲善其事必先利其器”,打造和熟悉一个强大的开发环境,是每个程序员必须的! 在Xcode 6中有许多快捷键的设定可以使得你的编程工作更为高效,对于在代码文件中快速导航.定位Bug以及新增应用特 ...

  3. UDP和TCP 简单 区别

    1.双方都是一种网络传输协议2.TCP需要建立连接,而UDP不需要建立连接(无连接传输)3.是否建立真实连接的特性,造成了双方可靠性的差距. @1 TCP属于可靠的传输协议:因为传输前双方建立好了连接 ...

  4. 最小生成树——Prim算法理解

    背景:本文是在小甲鱼数据结构教学视频中的代码的基础上,添加详细注释而完成的.该段代码并不完整,仅摘录了核心算法部分,结合自己的思考,谈谈理解. Prim算法理解: 如图(摘录自小甲鱼教学视频中的图片) ...

  5. 如何发布一个 npm 包

    一 背景 在工作时,突然接到经理的一个要求,需要将一个react的高阶组件函数封装成一个npm包.之前从没弄过,当场还是有些懵逼的,但是这毕竟是工作,不能推脱.于是开始了学习.汤坑之旅.最终包发布,线 ...

  6. Java实现 蓝桥杯 算法训练 求平方和

    试题 算法训练 求平方和 问题描述 请用函数重载实现整型和浮点习型的两个数的平方和计算 输入格式 测试数据的输入一定会满足的格式. 2 2(2行2列,第1行整型,第2行浮点型) 输出格式 要求用户的输 ...

  7. java实现黄金分割数

    黄金分割数 0.618 与美学有重要的关系.舞台上报幕员所站的位置大约就是舞台宽度的 0.618 处, 墙上的画像一般也挂在房间高度的 0.618 处,甚至股票的波动据说也能找到 0.618 的影子- ...

  8. 【Spring注解驱动开发】自定义TypeFilter指定@ComponentScan注解的过滤规则

    写在前面 Spring的强大之处不仅仅是提供了IOC容器,能够通过过滤规则指定排除和只包含哪些组件,它还能够通过自定义TypeFilter来指定过滤规则.如果Spring内置的过滤规则不能够满足我们的 ...

  9. zabbix 监控https URL

    由于生产环境的需要,zabbix 需要监控https的url,但是因为zabbix 是aws ec2 zabbix web绑定了域名,所以没有办法所代理. 有兴趣的可以看官方文档 https://ww ...

  10. Android事件传递机制总结

    Android中控件的分类 Activity dispatchTouchEvent(MotionEvent e) onTouchEvent(MotionEvent e) ViewGroup(View) ...