整理下获取下挂设备主机名demo

整理下获取下挂设备主机名 DEMO

主要是对sscanf函数使用的应用,知道固定长度如何提取?知道固定符号截至如何提取?

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

#define TMP_FILE "/tmp/.lan_info_list"

//获取下挂设备主机名
char *iface_get_STAhostname(char *macaddr,char *hoststr)
{
    char line_lan[256] = {0};
    FILE *STA_list=fopen(TMP_FILE, "r");
    if(!STA_list)
    {
        printf(" %s %d open sta_device file fail\n",__FUNCTION__, __LINE__);
        return NULL;
    }
    while(!feof(STA_list))
    {
        if (fgets(line_lan, sizeof(line_lan), STA_list))
        {
            char macstr[32] = {0};
			char num[5] = {0};
            char ipstr[32] = {0};
            char hostname[64] = {0};
            unsigned int mac[6] = {0};
			fprintf(stdout, "%s\n", line_lan);

            if (sscanf(line_lan, "%[^|]|%[^|]|%[^|]|%[^|]", hostname, num, ipstr, macstr) != 4)
                continue;
            if (sscanf(macstr, "%02X:%02X:%02X:%02X:%02X:%02X", &mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]) != 6)
			    continue;

			fprintf(stdout, "\033[;7;33mMAC: %s\033[0m\n", macstr);
            snprintf(macstr, sizeof(macstr), "%02X%02X%02X%02X%02X%02X%s", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], "\0");
            printf("%s %d macaddr:%s macstr:%s\n",__FUNCTION__, __LINE__, macaddr, macstr);
            if(!strcasecmp(macstr,macaddr))
            {
                printf("%s %d hostname:%s\n",__FUNCTION__, __LINE__, hostname);
                if(hoststr)
                    memcpy(hoststr,hostname,strlen(hostname));
                return  hoststr;
            }
        }
    }
    fclose(STA_list);


	
    return  hoststr;
}


执行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值