#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
using namespace std;
#define IFCFG_ETH0 "/etc/sysconfig/network-scripts/ifcfg-eth0"
#define IFCFG_LO "/etc/sysconfig/network-scripts/ifcfg-lo"
#define IFCFG_WLAN0 "/etc/sysconfig/network-scripts/ifcfg-wlan0"
#define HWADDR_LINE 7
#define MAXLINE 64
void inc_mac(char hwaddr[18]);
int main(int argc, char **argv)
{
int i;
char buf[MAXLINE] = {0};
char hwaddr[MAXLINE] = {0};
//get eth0 info and read the line :HWADDR=*****
FILE *fp_ifcfg_eth0 = fopen(IFCFG_ETH0, "r");
for(i = 1;i <= HWADDR_LINE;i++)
fgets(buf, MAXLINE-1, fp_ifcfg_eth0);
//fgets函数遇到换行符时会将其读进缓冲区中,也就所遇到换行符停止
buf[strlen(buf)-1] = '\0';
strncpy(hwaddr, buf+7, strlen(buf)-7);
cout << "Now mac = " << hwaddr << endl;
inc_mac(hwaddr); // mac + 1
cout << "mac + 1 = " << hwaddr << endl;
exit(0);
}
void inc_mac(char hwaddr[18])
{
int i, m = 4, n, conunt = 0;
for(i = 16;i >= 0;i--)
{
//skip ':'
if(i == 2 + 3*m)
{ m--; continue; }
//addr[i]++
if(hwaddr[i] == '9')
{ hwaddr[i] = 'A'; break; }
else if(hwaddr[i] == 'F')
{ hwaddr[i] = '0'; }
else
{ hwaddr[i]++; break; }
}
}
获取mac地址保存到字符数组并+1
最新推荐文章于 2023-05-15 21:43:29 发布
该程序从/etc/sysconfig/network-scripts/ifcfg-eth0文件中读取eth0的MAC地址,然后将MAC地址加1。通过遍历MAC地址字符串,对每个字符进行检查并递增,当达到'9'时转为'A',达到'F'时转为'0'。最终输出加1后的MAC地址。
643

被折叠的 条评论
为什么被折叠?



