Linux下监测网卡状态

article/2025/10/8 6:29:46

目录

1.说明

2.解析命令法:

2.1.CODE

2.2.TEST

3.SOCKET法


1.说明

        此代码主要对Linux下网卡4种状态进行检测,可以检查:

  1. 网卡是否存在;
  2. 网卡是否down;
  3. 网卡UP,插了网线(RUNNING);
  4. 网卡UP,没有插网线 

2.解析命令法:

2.1.CODE

#define BUFSIZ 256
/*check if_name status*if not exist,return 0*if exist and down,return 1*if up and notlink,return 2*if up and link,	return 3*/
int get_if_status(char *if_name)
{char buffer[BUFSIZ];char cmd[100];FILE *read_fp;int chars_read;	int ret =0;memset( buffer, 0, BUFSIZ );memset( cmd, 0, 100 );sprintf(cmd, "ifconfig -a | grep %s",if_name);read_fp = popen(cmd, "r");if ( read_fp != NULL ){chars_read = fread(buffer, sizeof(char), BUFSIZ-1, read_fp);pclose(read_fp);if (chars_read > 0){ret = 1;	/*if_name exist*/}else{fprintf(stderr, "%s: NO FOUND\r\n",if_name);return 0;	/*if_name not exist*/}}if(ret == 1){memset( buffer, 0, BUFSIZ );memset( cmd, 0, 100 );sprintf(cmd, "ifconfig | grep %s",if_name);read_fp = popen(cmd, "r");if ( read_fp != NULL ){chars_read = fread(buffer, sizeof(char), BUFSIZ-1, read_fp);pclose(read_fp);if (chars_read > 0){ret = 2;	/*if_name exist and up*/}else{fprintf(stderr, "%s: DOWN\r\n",if_name);return 1;	/*if_name exist but down*/}}}if(ret == 2){memset( buffer, 0, BUFSIZ );memset( cmd, 0, 100 );sprintf(cmd, "ifconfig %s | grep RUNNING | awk '{print $3}'",if_name);read_fp = popen(cmd, "r");if ( read_fp != NULL ){chars_read = fread(buffer, sizeof(char), BUFSIZ-1, read_fp);pclose(read_fp);if (chars_read > 0){fprintf(stderr, "%s: LINKED\r\n",if_name);	return 3;	/*if_name up and link*/}else{fprintf(stderr, "%s: UNPLUGGED\r\n",if_name);return 2;	/*if_name up and notlink*/}}}return -1;
}
int main(int argc, char* argv[])
{int i=0;if(argc != 2){fprintf(stderr, "usage: %s ", argv[0]);return -1;}i = get_if_status(argv[1]);printf( "if_status = %d\n", i );return 0;
}

2.2.TEST

# ./netlink eth100
eth100: NO FOUND
if_status = 0
## ifconfig eth0 down
# ./netlink eth0
eth0: DOWN
if_status = 1
## ifconfig eth0 up
# ./netlink eth0
eth0: UNPLUGGED
if_status = 2
## ./netlink eth0
eth0: LINKED
if_status = 3

3.SOCKET法

        是通过socket解析网卡当前状态,来判断网卡是否存在。

实际实现过程是通过socket获取网卡的SIOCGIFFLAGS属性,判断其IFF_UP属性即可。

 SIOCGIFFLAGS属性:


http://chatgpt.dhexx.cn/article/EHnp2kHw.shtml

相关文章

如何查询linux服务器的网卡,linux怎么查看网卡硬件信息

你们知道怎么查看电脑中的网卡型号吗?下面是学习啦小编带来的关于linux怎么查看网卡硬件信息的内容,欢迎阅读! Linux查看网卡信息方法一: 1.lspci | grep -i ethernet [rootlocalhost ~]# lspci | grep -i ethernet 01:00.0 Ethernet controller: Broad…

Linux网卡状态查看

博文背景 想知道ip a命令的输出都是什么意思,过于简单的如mtu、mac地址和广播地址我就不解释了 具体操作 重要文档 https://baturin.org/docs/iproute2/ http://web.archive.org/web/20220807073512/http://www.policyrouting.org/iproute2.doc.html https://lar…

SimpleDateFormat类 格式化日期

功能:格式化和解析日期 将Date类型的日期格式化成我们需要的日期类型一般是 字符串类型将字符串类的日期再转回来。 用到两个方法 format(Date date) : 将date型转换成特定格式的字符串 parse(String str) : 将字符串str转换成特定格式的dat…

php如何格式化日期格式,PHP如何格式化日期? 涨知识了

在做php开发时,经常会用到日期函数,我们可以通过这个函数将日期格式化输出显示。日期有多种的显示格式,这些格式在PHP里怎么格式化?下面一起来看下。 操作方法 01 先看下我们的代码,如图,在php里要获取到当…

Oracle格式化日期

将oralce中时间格式为XXX年XX月XX日,如下图: 需要给年月日添加引号,如to_char(sysdate,yyyy"年"mm"月"dd"日" ); select to_char(sysdate,yyyy"年"mm"月"dd"日") from dual;

微信小程序下拉菜单功能的实现

页面wxml代码如下&#xff1a; <!-- 下拉菜单栏 --><view classlist><ul class"font_s30"><li bindtap"getNav" data-idarea style"color:{{c_area}}"><view><span class "l_name" id"area&qu…

微信小程序-自定义下拉框组件

知识点&#xff1a;组件&#xff0c;animation&#xff0c;获取当前点击元素的索引与内容 微信小程序中没有select下拉选项框&#xff0c;所以只有自定义。自定义的话&#xff0c;可以选择模板的方式&#xff0c;也可以选择组件的方式来创建。 这次我选择了组件&#xff0c;这…

微信小程序下拉菜单组件实现

先看需求和效果&#xff0c;移动端设计比较常用的下拉菜单&#xff0c;主要用于筛选查询列表结果。下拉菜单的样式可以根据自己的具体需求进行修改。这里根据自己的实际需求开发了三种下拉类型&#xff1a; 效果展示 第一个是单选下拉菜单&#xff0c;单选之后立即收起。 第…

微信小程序 实现从顶部弹出的下拉框

效果图&#xff1a; 我尝试了微信提供的API wx.animation去实现这个功能&#xff0c;但很是麻烦&#xff0c;而且对于我这刚接触小程序的渣渣而言&#xff0c;实现起来也很是困难。所以我换了种方法&#xff0c;采用CSS的动画去实现。 wxml: <image classfabiao src../ico…

微信小程序下拉菜单实例

微信小程序下拉菜单思路与步骤&#xff1a; 布局方面&#xff0c;整体使用dl来写&#xff0c;二级包在dd中&#xff0c;用ul li来写&#xff1b;交互方面&#xff0c;点击某一级菜单&#xff0c;关闭兄弟子菜单&#xff0c;点击某子菜单关闭所有菜单。 1.使用dt做出第一级菜单 …

微信小程序实现上拉下拉菜单

问题 在使用小程序的时候基本的页面的一般都是很简洁的&#xff0c;所以会有一些菜单来做简单的诠释说明&#xff0c;或者是提供一些选项。这些菜单的弹出方式一般是向上和向下&#xff0c;那么如何来设置这些上下拉的菜单呢&#xff1f; 方法 上下拉菜单在微信小程序中起提示、…

微信小程序例子——下拉列表

1、效果展示 2、关键代码 .js文件 Page({data:{// text:"这是一个页面"open:false},showitem:function(){this.setData({open:!this.data.open})},onLoad:function(options){// 页面初始化 options为页面跳转所带来的参数},onReady:function(){// 页面渲染完成},onS…

uni-app微信小程序——下拉多选框

插件来自&#xff1a;select-cy - DCloud 插件市场 1、组件代码 <template><view class"uni-select-cy" :style"{ z-index: zindex }"><view class"uni-select-cy-select" :class"{ active: active }" click.stop&quo…

微信小程序下拉框选择

wxml代码 <view classtop-selected bindtapbindShowMsg><text>{{grade_name}}</text> </view> <!-- 下拉需要显示的列表 --> <view class"select_box" wx:if"{{select}}"><view wx:for"{{grades}}" wx:…

微信小程序——自定义下拉框

微信小程序本身并没有自带的下拉框组件&#xff0c;我们可以通过view标签自定义一个下拉框。(仅供参考&#xff09; 目录 文件目录实现效果实现逻辑设置数据设置默认选项实现弹出下拉框提供选项值设置所选值 源码wxmlwxssjs 文件目录 文件的功能&#xff1a; xxx.js&#xff…

小程序如何实现下拉选项操作

wxml文件代码 <picker class"picker" mode"selector" bindchange"bindAccountChange" value"{{accountIndex}}" range-key"label"range"{{accounts}} "><view class"weui-select">{{accou…

小程序下拉列表框菜单

小程序下拉列表框菜单 <view classtop><view classtop-text> 选择班别</view><!-- 下拉框 --><view classtop-selected bindtapbindShowMsg><text>{{grade_name}}</text><image src/images/xia.png></image></view&…

微信小程序的简单下拉框组件

网上的下拉框组件都不是自己想要的于是就自己写了一个。 wxml 原代码上传竟然显示不出来&#xff0c;wxml只能截图了&#xff0c;然后是js部分 data: { dropdownData:[“综合排序”,”行政区”,”商业圈”],//下拉框的数组 selectData: [‘默认排序’, ‘距离我最近’, …

微信小程序组件 —— 树形下拉框

因为项目需求&#xff0c;需要一个树形下拉选择框&#xff0c;参考了网上的树形结构整理出了这样一个效果图 下载地址&#xff1a;wx_treeSelect下载 其实主要还是参考了treeview的递归思想 微信小程序实现简单的树形图treeview 绘制出下拉框内的内容&#xff0c;在加个状态判…

微信小程序 一个简单的select下拉框

微信小程序 一个简单的select下拉框 用的是transform过渡&#xff0c;没用动画 看看效果 废话不多说&#xff0c;直接上代码 wxml: <view class"item"><label class"first"><text>*</text>公司/商户类型&#xff1a;</labe…