系统无ifconfig,一条命令获取本机ip并将其赋值给指定变量来使用

简介: 在Linux系统中,准确地获取本机IP信息是非常有用的。在写bash shell脚本事经常会用到IP,这时就需要我们使用一些办法获取本机IP并赋值给变量来使用。

在Linux系统中,准确地获取本机IP信息是非常有用的。在写bash shell脚本事经常会用到IP,这时就需要我们使用一些办法获取本机IP并赋值给变量来使用。最近刚刚完成grep及sed的摸索、研究,本着学以致用的原则,用一条命令获取本机IP并将其赋值给某个变量来使用。由于CentOS7.2中已经不再集成ifconfig我们就使用系统自带的ip命令来完成这一系列实验。

一、获取本机IP

[root@GeekDevOps ~]# ip a|grep -w 'inet'|grep 'global'|sed 's/^.*inet //g'|sed 's/\/[0-9][0-9].*$//g'
10.1.1.21

在此条命令中,-w指定完全匹配,global进一步限定了范围,后面的两个sed则替换了指定行中的无关部分。此时命令也可以写成:

[root@GeekDevOps ~]# ip a|grep -w 'inet'|grep 'global'|sed 's/.*inet //g'|sed 's/\/[0-9][0-9].*$//g'

上面的命令中有一个空格,为了更好地区分开来,写成如下:

[root@GeekDevOps ~]# ip a|grep -w 'inet'|grep 'global'|sed 's/.*inet.//g'|sed 's/\/[0-9][0-9].*$//g'
10.1.1.21

二、把指定获取到的值赋给指定变量(两种方法)

[root@GeekDevOps ~]# echo $IP

[root@GeekDevOps ~]# IP=$(ip a|grep -w 'inet'|grep 'global'|sed 's/^.*inet //g'|sed 's/\/[0-9][0-9].*$//g')
[root@GeekDevOps ~]# echo $IP
10.1.1.21
[root@GeekDevOps ~]# unset IP
[root@GeekDevOps ~]# echo $IP

[root@GeekDevOps ~]# IP=`ip a|grep -w 'inet'|grep 'global'|sed 's/^.*inet //g'|sed 's/\/[0-9][0-9].*$//g'`
[root@GeekDevOps ~]# echo $IP
10.1.1.21
相关文章
|
4月前
|
网络协议 测试技术 网络架构
Ping命令的用途?
【8月更文挑战第14天】Ping命令的用途?
120 2
|
7月前
|
网络协议 Shell Linux
系统初始化shell,包括:挂载镜像、搭建yum、设置主机名及IP地址和主机名映射、配置动态IP、关闭防火墙和selinux
系统初始化shell,包括:挂载镜像、搭建yum、设置主机名及IP地址和主机名映射、配置动态IP、关闭防火墙和selinux
97 2
|
存储 Shell Perl
使用shell脚本从ifconfig命令结果中提取IP地址
使用shell脚本从ifconfig命令结果中提取IP地址
173 0
Linux常用命令语法(四)修改主机名和ip的映射关系
Linux常用命令语法(四)修改主机名和ip的映射关系
Linux常用命令语法(四)修改主机名和ip的映射关系
|
Linux
linux永久更改eth0的ip地址
linux中永久修改ip和子网掩码,可以用命令也可以直接到文件里修改。这里推荐直接到文件中修改。1、进入网卡配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ethN (ifcfg-ethN是你要修改的网卡,可以用ifconfig查看你要修改的网卡)2、进入文件进行编辑,更改其中的ip 和子网掩码。
3214 0
|
Linux
linux修改主机名,关闭图形化界面,绑定ip地址,修改ip地址
1关闭图形化界面 vi /etc/inittab 改成id:3:initdefault: 注意:不要选0或6 2.修改主机名 vi /etc/sysconfig/network   修改即可 3,修改ip地址 vi /etc/sysconfig/network-scripts/ifcfg-eth0   4.
1186 0