当前位置: 首页 > article >正文

[linux]linux c实现mac地址写入文件,实现删除和增加操作

功能描述

      c实现mac地址写入文件,实现删除和增加操作

代码实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int find_and_del_mac_from_old_file(char *mac)
{
    char tmpbuf[8192] = {0};
    char buf[8192] = {0};
    char cmd[9000] = {0};
    char *p = NULL;
    char *q = NULL;

        char result[8192] = {0};
    int ret = 0;
    FILE * fp = fopen("./hostapd_mac","r+");

    if(fp == NULL)
    {
        printf("error open : ./hostapd_mac \n");
        return 0;
    }
    else
    {
        fgets(buf,sizeof(buf),fp);
        printf("buf=%s\n",buf);

        if(p = strstr(buf,mac)) 
        {
                        printf("p=%s strlen(p)=%d\n",p,strlen(p));
                        printf("buf=%s \n",buf);
                     if(q = strstr(p,";")) 
            {
                q = q + 1;
                                strncpy(result,buf,strlen(buf) - strlen(p));
                                printf("q=%s\n",q);
                                printf("p=%s\n",p);
                                printf("result=%s\n",result);
                ret = 1;
            }
                        memset(cmd,0,sizeof(cmd));
                        snprintf(cmd, sizeof(cmd),"echo -n \"%s%s;\" > ./hostapd_mac", result,q);
                        system(cmd);
                        printf("delete mac is %s\n",mac);
        }
        fclose(fp);
    }

    return ret;
}

int add_black_mac_to_file(char *mac)
{
    char tmpbuf[8192] = {0};
    char buf[8192] = {0};
     char cmd[9000] = {0};
    char *p = NULL;

    FILE * fp = fopen("./hostapd_mac","a+");

    if(fp == NULL)
   {
        printf("error open : ./hostapd_mac \n");
        return 0;
   }
   else
   {
        fgets(buf,sizeof(buf),fp);
        if(p = strstr(buf,mac))
        {
                        printf("mac had existed in file\n");
            fclose(fp);
            return 1;
        } 
        else
        {
                        mac[18] = '\0';
            printf("buf=%s mac=%s\n",buf,mac);   
            sprintf(tmpbuf,"%s%s;",buf,mac);
            printf("tmpbuf=%s\n",tmpbuf);            
            if(strlen(tmpbuf) > 8100)
            {
                fclose(fp);
                system("rm -rf ./hostapd_black_mac");
                return 1;
            }
            snprintf(cmd, sizeof(cmd),"echo -n \"%s\" > ./hostapd_mac", tmpbuf);
            system(cmd);
        }
        fclose(fp);
    }

    return 0;
}

int main(int argc, char*argv[])
{
    char mac[18] = {0};
     if(argc == 3)
     {
        strncpy(mac,argv[1],17);
        printf("mac=%s\n",mac);
                if(strcmp(argv[2],"add") == 0)
                        add_black_mac_to_file(mac);

                if(strcmp(argv[2],"del") == 0)
                        find_and_del_mac_from_old_file(mac);
        printf("parm error\r\n");
    }
    return 0;

}


http://www.kler.cn/a/405784.html

相关文章:

  • 《人工智能深度学习的基本路线图》
  • SOA(面向服务架构)全面解析
  • Leetcode 完全二叉树的节点个数
  • yolov5 数据集分享:纯干货
  • Springboot 整合 Java DL4J 搭建智能问答系统
  • ThingsBoard规则链节点:AWS SNS 节点详解
  • windows下sqlplus连接到linux oracle不成功
  • dockerdsktop修改安装路径/k8s部署wordpress和ubuntu
  • 【论文阅读】Poison Forensics: Traceback of Data Poisoning Attacks in Neural Networks
  • 【大模型-智能体】AutoGen Studio测试和导出工作流程
  • C++:设计模式-单例模式
  • 如何优化Sql的查询性能?
  • 实景三维赋能国土空间智慧治理
  • Python爬虫中的IP封禁问题及其解决方案
  • Chrome 浏览器 131 版本新特性
  • WebLogic 版本升级的注意事项与流程
  • STM32 RAM在Memory Map中被分为3个区域
  • Vscode/Code-server无网环境安装通义灵码
  • Jenkins修改LOGO
  • 【大数据测试Flume:从 0-1详细教程】
  • Chrome 浏览器 131 版本开发者工具(DevTools)更新内容
  • 基于深度学习CNN算法的花卉分类识别系统01--带数据集-pyqt5UI界面-全套源码
  • 使用Electron将vue2项目打包为桌面exe安装包
  • 大数据基于Spring Boot的化妆品推荐系统的设计与实现
  • 深入探究蓝牙节能技术:SNIFF与HOLD模式
  • Spring Boot 的 WebClient 实践教程