C语言+shell实现linux网卡状态检测
本文实例为大家分享了C语言+shell实现linux网卡状态检测的具体代码,供大家参考,具体内容如下
不解释,直接上代码要求linux环境具备grep和awk(awk可选)
#include#include #include #include intget_if_status(char*if_name) { charbuffer[BUFSIZ]; charcmd[100]; FILE*read_fp; intchars_read; intret=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; } else { fprintf(stderr,"%s:NOFOUND\r\n",if_name); return0; } } 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; } else { fprintf(stderr,"%s:DOWN\r\n",if_name); return1; } } } if(ret==2) { memset(buffer,0,BUFSIZ); memset(cmd,0,100); sprintf(cmd,"ifconfig%s|grepRUNNING|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); return3; } else { fprintf(stderr,"%s:UNPLUGGED\r\n",if_name); return2; } } } return-1; } intmain(intargc,char*argv[]) { inti=0; if(argc!=2) { fprintf(stderr,"usage:%s ",argv[0]); return-1; } i=get_if_status(argv[1]); printf("if_status=%d\n",i); return0; }
嵌入式编译mips-linux-gnu-gcc-mips32-EL-mhard-float-Wall-onetlinknetlink.c
测试结果
#./netlinketh100 eth100:NOFOUND if_status=0 # #ifconfigeth0down #./netlinketh0 eth0:DOWN if_status=1 # #ifconfigeth0up #./netlinketh0 eth0:UNPLUGGED if_status=2 # #./netlinketh0 eth0:LINKED if_status=3
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。