码迷,mamicode.com
首页 > 其他好文 > 详细

读取多行数据,每行存放一个位置。:读取通过wps模式连接到设备的信息。

时间:2017-05-07 10:26:40      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:while   rsn   group   class   state   remote   return   cmd命令   cal   

  数据的情况是按行存放,行数读取前不固定。 我这个实现方式不一定是最简单方便的,希望有更好的解决方式的网友留言告之~ 

  当连接一个设备上来的时候是这种,两个如下叠加。  

ff:ff:ff:ff:ff:ff
dot11RSNAStatsSTAAddress=ff:ff:ff:ff:ff:ff
dot11RSNAStatsVersion=1
dot11RSNAStatsSelectedPairwiseCipher=00-0f-ac-4
dot11RSNAStatsTKIPLocalMICFailures=0
dot11RSNAStatsTKIPRemoteMICFailures=0
hostapdWPAPTKState=11
hostapdWPAPTKGroupState=0
wpsUuid=638b7dae-1b43-534b-9456-d05a8dbfef04
wpsPrimaryDeviceType=10-0050F204-5
wpsDeviceName=KNT-111
wpsManufacturer=HUAWEI
wpsModelName=KNT-111
wpsModelNumber=KNT-111
wpsSerialNumber=SWYDU12358512544

  使用ShellCmd命令获取当下信息,并且利用文本处理命令提取当前的modelName

hostapd_cli -i ath0 all_sta | grep wpsModelName | awk -F= {print $2} | sed :a;N;$!ba;s/\n/,/g\‘

  这条命令执行完之后可以得到类似与KNT-111,KNT-222,KNT-333 这种类型的字符串。然后需要将这种字符串按照,号分隔开,分别提取到对于的空间中去,多少行数可以使用如下的命令:

 hostapd_cli -i ath0 all_sta | grep wpsModelName | wc -l 

  提取该字符串可以使用如下的方式:

int read_wps_device_name_in_str(char *param, int ncount)
{
    char *p;
    char *p2;
    unsigned int len=0;
    unsigned int count=0;
    p2 = param;
    while((count != ncount) && (*p2 != \0)) {
        p = strchr(p2,,);
        if (p) {
            len = p-p2;
            if (len > 64) {
                break;
            }
            strncpy(wps_device[count].DeviceName,p2,len);
            wps_device[count].DeviceName[len] = \0;
            count++;
            p2 = p + 1;
        } else {
            break;
        }
    }
    return 0;
}

在使用这个函数处理之前需要将待处理的字符串末尾加上一个‘,’号,总计数值则为行数。

通过shell读取的字符串尾部有个\n符需要剔除掉。

void util_strip_traling_spaces( char* one_string )
{
    char* tmp=one_string;
    int length=strlen(tmp);
    while(
            length
            &&(
                ( tmp[ length-1 ] == \r )
                || ( tmp[ length-1 ] == \n )
                || ( tmp[ length-1 ] == \t )
                || ( tmp[ length-1 ] ==   )
            )
        )
    {
        tmp[ length-1 ]=0;
        length--;
    }
}

 

buffer[strlen(buffer)] = ‘,‘;
buffer[strlen(buffer) + 1] = ‘\0‘;

读取多行数据,每行存放一个位置。:读取通过wps模式连接到设备的信息。

标签:while   rsn   group   class   state   remote   return   cmd命令   cal   

原文地址:http://www.cnblogs.com/fogcell/p/6819284.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!