引言

使用场景:

我使用的Linux服务器上有多个网卡,有时候就需要在脚本中使用到指定网卡的IP地址或MAC地址,那么这个时候就有两种做法,一是预先读取网卡的IP地址或MAC地址,然后写入到脚本中;另外一种方法就是通过shell命令实时获取指定网卡上的当前IP地址或MAC地址。

一般用法:

  1. 使用ifconfig eth0读取网卡信息

  2. 手动将IP地址或MAC地址拷贝出来,并填入到脚本中的对应变量中

一句话脚本用法:

[plain] view plaincopy
  1. ifconfig eth0 | grep "inet addr:" | awk '{print $2}' | cut -c 6-  (获取eth0网卡的IP地址)
  2. ifconfig eth0 | grep "HWaddr" | awk '{print $5}'  (获取eth0网卡的MAC地址)

上面的脚本分解步骤是:

  1. 获取eth0网卡的信息
  2. 过滤出IP地址的行或MAC地址的行
  3. 使用awk输出指定字段,对于MAC地址,第5个字段就是MAC;而对于IP地址,还需要对第2个字段截取第6个字符之后的内容

ifconfig命令部分说明

先看一下ifconfig的man手册中的描述:

Ifconfig  is  used  to  configure  the  kernel-resident network interfaces.  
       If  no  arguments  are  given,  ifconfig  displays the status of the currently active interfaces.  If a single
       interface argument is given, it displays the status of the given interface only; if a single  -a  argument  is
       given, it displays the status of all interfaces, even those that are down.

ifconfig命令的主要作用是进行网卡配置,但是如果没有给定参数或者只是给定了网卡名称这一个参数,则就会显示网卡的状态信息。

因此,在这里,我们通过参数eth0来指定输出该网卡的信息

grep命令部分说明

我们先看一下ifconfig的输出格式:

eth0      Link encap:Ethernet  HWaddr 08:00:27:f6:18:8e  
          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fef6:188e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12575 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3429 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1931585 (1.9 MB)  TX bytes:465667 (465.6 KB)

其中红色部分中包含了MAC地址信息,蓝色部分包含了IPv4的地址信息。而如果我们指定的网卡不存在时,则输出信息如下:

nfer@nfer:~$ ifconfig eth1
eth1: error fetching interface information: Device not found

因此在上面的命令中,我们分别使用grep "inet addr:"和grep "HWaddr"来过滤出IPv4的地址和MAC地址所在的行,如果是该网卡不存在或者不处于活动状态就过滤不到对应的行。

awk命令和cut命令部分说明

在上面的grep命令过滤出来的MAC地址和IPv4地址所在行的格式如下:

eth0      Link encap:Ethernet  HWaddr 08:00:27:f6:18:8e  
          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0

因此,如果是获取MAC地址,只需要使用awk输出第5个字段的值即可:awk '{print $5}';

而如果是要获取IPv4的地址,则需要先输出第2个字段的值:awk '{print $2}',然后再使用cut命令,将"addr:"这5个字符去除,即从第6个字符到结尾的所有字符:cut -c 6-。

其中cut命令的-c参数以及后面的需要显示的字符列表的表述方式的描述如下:

       -c, --characters=LIST
              select only these characters


       Use one, and only one of -b, -c or -f.  Each LIST is made up of one range, or many ranges separated by commas.
       Selected  input  is written in the same order that it is read, and is written exactly once.  Each range is one of:
       N      N'th byte, character or field, counted from 1
       N-     from N'th byte, character or field, to end of line
       N-M    from N'th to M'th (included) byte, character or field
       -M     from first to M'th (included) byte, character or field

我们这里是按照字符操作的,所以使用了-c参数;需要显示的是从第6个字符到结尾的部分,所以使用了N-的模式表示LIST。

总结

本次一句话脚本使用到了以下知识:

  1. ifconfig命令
  2. grep命令
  3. awk命令
  4. cut命令的-c参数

linux 获取eth0(指定网卡)网卡的IP地址(或MAC地址)相关推荐

  1. 一句话脚本系列之获取eth0网卡的IP地址(或MAC地址)

    欢迎转载!转载时请注明出处:http://blog.csdn.net/nfer_zhuang/article/details/42609733 引言 使用场景: 我使用的Linux服务器上有多个网卡, ...

  2. Python # 扫描端口功能 # 获取网卡的Mac地址 # 局域网扫描器IP地址和MAC地址,获取网卡名称和其ip地址

    #!/usr/bin/env python # -*- coding: utf-8 -*- # 开发人员: # time: 2021-09-07 20:37 # 开发工具: PyCharm # Ver ...

  3. Linux系统利用C语言获取网口信息(IP地址,MAC地址,状态,带宽speed等)

    目录 设计思路 ioctl操作参数 获取网口的遍历结构 获取对应的参数信息 源代码 ifinfo.c ifinfo.h test.c 测试结果 设计思路 首先给需要查询的信息定义个结构(当然,这里可以 ...

  4. cisco 交换机 获取 转发表_思科交换机端口号、终端IP地址和MAC地址的互查

    很多时候,在排查和定位网络故障或者梳理网络架构情况时,你可以直接获取的信息有限,比如你只知道用户的IP或MAC而不知道它连到了交换机哪个端口,或者你知道故障点在交换机某个端口上,但不知道这个端口连到了 ...

  5. QT获取本机的IP地址、mac地址、mask地址和广播IP(Ubuntu QT环境下实现)

    1.简介 用QT做网络通讯数据传输时,要先获取本机的网卡的IP地址.mac地址.mask地址和广播IP,以便创建socket进行通讯数据传输. 2.本博文主要封装函数: (1).getIP():获取本 ...

  6. java获取IP地址和MAC地址方式

    java获取IP地址和MAC地址方式 前端和后台都可以获取 ip获取方式比较简单,就不做分析了,主要说mac的获取 前端获取的方式与局限性:尝试好几种方式,这种是最易实现.最简单的方式,确实能获取该浏 ...

  7. java 获取服务器IP地址及MAC地址

    java编程实现获取机器IP地址及MAC地址的方法,实例分析了Java分别针对单网卡及多网卡的情况下获取服务器IP地址与MAC地址 /*** 此方法描述的是:获得服务器的IP地址*/public st ...

  8. java 获取客户端真实 ip 地址和 mac 地址

    现在都流行显示 ip 归属地,那么我先来获取客户端的真实 ip 地址以及 mac 地址,上代码 import javax.servlet.http.HttpServletRequest; import ...

  9. 实验3:通过编程获取IP地址与MAC地址的对应关系的加分题

    首先,本地主机模拟一个远端主机,发送一个ARP请求报文,该请求报文请求本机网络接口上绑定的IP地址与MAC地址的对应关系:在组装报文过程中,源MAC地址字段和源IP地址字段需要使用虚假的MAC地址和虚 ...

  10. 编程获取ip地址与mac地址的对应关系_[读书笔记]CSAPP:25[VB]网络编程1

    视频地址: [精校中英字幕]2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com 课件地址: ...

最新文章

  1. L09-10老男孩Linux运维实战培训-Nginx服务生产实战应用指南05(架构解决方案)
  2. PyTorch 深度剖析:如何保存和加载PyTorch模型?
  3. CISCO路由器的恢复方法
  4. J2EE项目移植问题一
  5. 第一部分:TCL基本知识
  6. 云开发平台开箱,3分钟零基础搭建个人Hexo博客
  7. SM30 - SMOFOBJECT
  8. 二叉树删除节点,(查找二叉树最大值节点)
  9. 360 再次开源管理平台 Wayne:基于企业级 Kubernetes 集群
  10. 解决gdal集成libkml的链接错误
  11. 打表找规律-灯泡状态数
  12. Tableau Desktop Pro中文破解版
  13. android 编写优质代码,GitHub - RayFantasyStudio/iCode-Android: 为开发者而生,提供在线代码存放,展示你优秀代码的平台...
  14. 我愿称之为:最强播放器!
  15. linux卸载致远oa,致远oa(seeyon)文件上传漏洞重现及分析
  16. 幻想战姬PVP模拟器(一)
  17. java/php/net/python羽毛球场地管理系统设计
  18. 函数最值题目及答案_有关函数的极值与导数的测试题及答案
  19. html在线编辑器代码运行,JSRun - 在线JS、HTML编辑器(同时也支持各种后台代码的编辑运行)...
  20. OllyDbg 使用笔记 (一)

热门文章

  1. [坐标纠偏] WGS84转GCJ02、BD09,GCJ02转BD09总结
  2. php 银行卡二三四要素验证接口
  3. cf两边黑屏怎么解决win10_win10摄像机黑屏的解决方案!
  4. python创建字符串数组_用zeep创建一个字符串数组参数?
  5. MATLAB清除内存中变量
  6. 除了加速上币,OKEx在DeFi热潮中还能做什么?
  7. 第5章-着色基础-5.4-锯齿和抗锯齿
  8. Google Play镜像站
  9. 高中数学知识点总结归纳之立体几何
  10. H3C认证云计算工程师