前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Shell 命令行获取本机IP,grep的练习

Shell 命令行获取本机IP,grep的练习

作者头像
FungLeo
发布于 2018-01-08 07:27:07
发布于 2018-01-08 07:27:07
6.4K00
代码可运行
举报
运行总次数:0
代码可运行

Shell 命令行获取本机IP,grep的练习

在 mac 下面输入 ifconfig 或者在 linux 下面输入 ip a 就可以得到我们的网卡信息。不过通常情况下,我们需要查看的是我们的IP地址,不需要这么多的信息。所以,我想把这些信息给摘取出来。

mac ifconfig 下面的实现

我们输入 ifconfig 会得到大段的信息,我们可以看到我们想要的IP地址前面的字符串是 inet

所以,我们优化一下代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ifconfig | grep inet

得到如下信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    inet 127.0.0.1 netmask 0xff000000
    inet6 ::1 prefixlen 128
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
    inet6 fe80::85e:9798:4041:1717%en0 prefixlen 64 secured scopeid 0x4
    inet 192.168.12.139 netmask 0xffffff00 broadcast 192.168.12.255
    inet6 fd86:415c:c5f9::c72:1c02:f044:65de prefixlen 64 autoconf secured
    inet6 fd86:415c:c5f9::cd76:7bb1:f77d:46f0 prefixlen 64 deprecated autoconf temporary
    inet6 fd86:415c:c5f9::508d:685b:6a66:b3ce prefixlen 64 autoconf temporary
    inet6 fe80::9446:a1ff:fe5e:9b8f%awdl0 prefixlen 64 scopeid 0x9
    inet6 fe80::9d71:6fa:3da5:9cb6%utun0 prefixlen 64 scopeid 0xa

好,已经精简很多了。

我们再排除掉 inet6127 的信息,就可以得到我们的本地IP了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ifconfig | grep inet | grep -v inet6 | grep -v 127

得到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    inet 192.168.12.139 netmask 0xffffff00 broadcast 192.168.12.255

最前面是一个制表符,我们不管,我们用空格分割,并取第二个字段,就可以得到我们的IP信息了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ifconfig | grep inet | grep -v inet6 | grep -v 127 | cut -d ' ' -f2

就顺利的得到另外我们想要的本机IP地址。

我们在 ~/.bin/下面创建一个 getip 的文件,并用 chmod +x ~/.bin/getip 赋予执行权限。然后在命令行里输入 getip 就可以得到我们的本机IP了。

需要先把 ~/.bin/ 配置为环境变量,请参考 将这个命令作为一个系统命令,可以随时执行

在 linux centos 7 下面实现获取本机IP的脚本

linux 不使用 ifconfig 命令来获取信息,而是使用 ip a 来获取。

所以我们把上面的命令修改一下,改成

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ip a | grep inet | grep -v inet6 | grep -v 127 | sed 's/^[ \t]*//g' | cut -d ' ' -f2

由于 linux 中得到的信息的最前面不是制表符而是空格,所以加上了 sed 's/^[ \t]*//g' 来清除开头的空格。

其他的逻辑是一样的。如果喜欢的话,也可以搞成全局的,逻辑基本和mac是一致的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-08-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux操作系统基础(七):Linux常见命令(二)
注:在Linux操作系统中,虽然我们通过useradd命令可以快速创建一个账号,但是这个账号默认没有密码,所以不能进行登录操作。如果想进行登录,必须为这个账号添加一个密码!
Lansonli
2024/03/19
1150
测试:Oracle 19c RAC添加私网
最近有个客户需求是在某12.2版本的RAC环境上添加心跳网络,顺便考虑将之前的心跳网络改为asm专用。我目前只有19c的RAC的测试环境(19c是12c的最终稳定版本),直接测试验证下过程备忘。
Alfred Zhao
2019/11/04
8950
linux学习笔记五
笔记摘抄自《linux操作系统基础及应用》 ---- 作业控制 正在执行的一个或者多个程序可形成一个作业。使用管道命令和重定向命令,一个作业可以启动多个进程。 如 : cat/etc/passwd | grep root | wc -l 作业就同时启动l cat,grep,wc三个进程。 根据作业的凡是不同,作业分成二大类。 1.0 前台作业:运行于前台,用户正对其进行交互操作。 2.0 后台作业:运行于后台,不接受终端的输入,但是向终端输出执行结果。 作业既可以在前台运行,也可以再后台运行,但
热心的社会主义接班人
2018/04/27
9110
linux学习笔记五
每天学一个 Linux 命令(64):ifconfig
ifconfig 命令用于查看、配置、启用或禁用网络接口和显示 Linux 系统网卡的网络参数。
民工哥
2021/03/30
9670
怎么抓取 MQTT 协议数据包进行调试分析
在使用 MQTT 协议开发物联网相关项目或者作为消息队列使用时,可能会遇到一些问题:
沈唁
2021/03/11
3.7K0
怎么抓取 MQTT 协议数据包进行调试分析
重启 CentOS 7 系统后的 IP 地址问题
在配置 Zookeeper 的时候,我重启了 CentOS 7,发现使用 XShell 远程连接系统(主机:192.168.186.128)超时。
RendaZhang
2020/10/09
1.4K0
重启 CentOS 7 系统后的 IP 地址问题
Ubuntu 20.04 设置静态IP
服务器环境需要有静态的 IP 用于SSH登陆,本文记录 ubuntu 系统下设置静态IP的方法。 解决方案 确定上网使用的网卡 修改 NetworkManager 配置文件内容 确定网卡 ifconfig 命令可以查看当前网络配置 $ ifconfig enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.4 netmask 255.255.255.0 broadcast 192.16
为为为什么
2022/08/06
2.9K0
cni | 配置浅薄认识
cnitool是一个执行CNI配置的简单程序。它将在已创建的网络命名空间中添加或删除接口。
heidsoft
2022/04/18
8870
cni | 配置浅薄认识
Linux系统之网卡子接口配置方法
江湖有缘
2023/10/01
1.5K0
Linux系统之网卡子接口配置方法
为什么我们家里的IP都是192.168开头的?
是的,还是我小白,什么技术博主,老情感博主了。 来讲个故事。 资深老舔狗小张今天很兴奋,说什么也要请大家喝奶茶。 因为他说他感觉要跟喜欢的女生小吕修成正果了。 一问为什么。 他耳朵都红了,说"我觉得小吕在暗示我了,她说她喜欢看阿凡达,正好我长得就像阿凡达"。
小白debug
2023/02/17
1.7K0
为什么我们家里的IP都是192.168开头的?
如何优雅的获取 Mac OS 系统 IP 地址
用惯了 windows 系统的电脑,再使用苹果电脑时,总会有各种不习惯。比如,在获取电脑 IP 地址的时候,windows 电脑使用 ipconfig 命令就能非常方便的获取。但是,在苹果电脑上,使用类似的命令工具 ifconfig 却不那么方便了。因为系统会打印出很多无用的网卡信息,那么我们如何能够在 Mac 系统上优雅的获取 IP 地址呢?这就是我们今天想要介绍的内容。
liuzhen007
2022/01/06
3.1K0
如何优雅的获取 Mac OS 系统 IP 地址
CentOS 7中网络设置图文详解
[root@localhost ~]# ifconfig //查看网络接口信息
知忆
2021/06/22
5.3K0
放弃 ifconfig,拥抱 ip 命令
在很长一段时间内,ifconfig 命令是配置网络接口的默认方法。它为 Linux 用户提供了很好的服务,但是网络很复杂,所以配置网络的命令必须健壮。ip 命令是现代系统中新的默认网络命令,在本文中,我将向你展示如何使用它。
用户8639654
2021/09/09
3440
RAC:Oracle 19C 数据库一键安装
本文将演示如何使用脚本一键安装 Oracle 19C RAC 3 节点数据库的全过程。
Lucifer三思而后行
2022/09/08
9310
Linux系统之ifconfig命令的基本使用
ifconfig命令是在UNIX和类UNIX系统中常用的命令,它用于配置网络接口参数。以下是ifconfig命令的特点:
江湖有缘
2023/09/24
1.4K0
Linux系统之ifconfig命令的基本使用
一天一个 Linux 命令(46):ifconfig 命令
Linux下的ifconfig命令(英文全称是“network interfaces configuring”)是用于配置和显示Linux内核中网络接口的网络命令。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。有点类似windows系统下的ipconfig命令行工具
joshua317
2022/03/25
6520
浅谈kubernete中的flannel网络插件
容器中的网络,无非就是2个方面,同一台宿主机上面的容器是可以联通的,不同宿主机上的容器相互间也是可以联通的。
jinjunzhu
2020/08/20
6710
LINUX vm网络配置
VMware Workstation这款虚拟机软件为用户提供了3种可选的网络模式,分别为“使用桥接网络”“使用网络地址转换(NAT)”与“使用仅主机模式网络”。
用户8006012
2022/10/23
2.6K0
10.11 Linux网络相关
linux网络相关 ifconfig查看网卡ip(yum install net-tools) ifup ens33/ifdown ens33 设定虚拟网卡ens33:1 mii-tool ens33 查看网卡是否连接 ethtool ens33 也可以查看网卡是否连接 更改主机名 hostnamectl set-hostname aminglinux DNS配置文件/etc/resolv.conf /etc/hosts文件 ifconfig命令 在centos7中,只能只用默认的 ip addr命令查看I
运维小白
2018/02/06
1.3K0
10.11 Linux网络相关
Kubernetes配置flannel网络
操作环境 网络拓扑图 操作步骤 配置k8s-master 1.在k8s-master节点上创建flannel网络 [root@k8s-master yaml]# etcdctl mk /atomic.
菲宇
2019/06/12
1.9K0
Kubernetes配置flannel网络
相关推荐
Linux操作系统基础(七):Linux常见命令(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文