获取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. Java四种访问修饰符

    Java 四种访问权限 一.概述 访问等级比较:public > protected > default > private 无论是方法还是成员变量,这四种访问权限修饰符作用都一样 ...

  2. vue-cli3或者4中如何正确的使用public中的图片

    标题说的很清楚了,就是要使用public中的图片 那么为什么要把图片放到public中呢,其实官网上面也说了,要么是需要动态引入非常多的图片,特别是小图标,如果放在assert中的话,会被webpac ...

  3. [ES6系列-07]Generator Function: 生成器函数

    [原创]码路工人 Coder-Power 大家好,这里是码路工人有力量,我是码路工人,你们是力量. github-pages 博客园cnblogs Generator function 生成器函数是E ...

  4. ubuntu部署TimescaleDB

    系统环境: ubuntu16.04 PostgreSQL 版本: 12 注意:TimescaleDB 需要PostgreSQL 11.4+或12.0+.不再支持PostgreSQL 9.6.3+和10 ...

  5. VC程序设计--文字输出方法与字体示例

    在用户窗口上输出一个扇形,并在扇面竖向输出一首唐诗.本例使用绝对定位确定输出文字的位置,并采用多种自定义字体输出文字. // poemDemo.cpp : 定义应用程序的入口点. // #includ ...

  6. python库-collections模块Counter类

    Counter类主要是用来跟踪值出现的次数.它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value. demo: all_words = [] # 列表里面是汉字(可 ...

  7. 使用ADMT和PES实现window AD账户跨域迁移-介绍篇

    使用 ADMT 和 pwdmig 实现 window AD 账户跨域迁移系列: 介绍篇 ADMT 安装 PES 的安装 ADMT:迁移组 ADMT:迁移用户 ADMT:计算机迁移 ADMT:报告生成 ...

  8. elasticsearch中保存时间格式

    利用logstash从文档中导入数据到es中,若未事先设定数据格式,有可能存储时间并未保存为date格式而是text格式. 时间若保存为text,则在会以字符串数组格式存储在es中,是乱序,不好查询. ...

  9. Java实现 蓝桥杯 算法提高 天天向上(DP)

    试题 算法提高 天天向上 问题描述 A同学的学习成绩十分不稳定,于是老师对他说:"只要你连续4天成绩有进步,那我就奖励给你一朵小红花."可是这对于A同学太困难了.于是,老师对他放宽 ...

  10. Java实现 蓝桥杯 算法训练 字符串长度(IO无敌)

    试题 算法训练 字符串长度 问题描述 输入一个字符串,输出其长度. 输入格式 输入一个字符串 输出格式 输出字符串长度 样例输入 一个满足题目要求的输入范例. HelloWorld 样例输出 10 数 ...