linux 修改网卡配置信息IP,netmask , gateway(附C语言实现代码)

本文介绍了一种使用C语言来持久性地修改Linux系统的网卡配置的方法,包括IP地址、子网掩码和网关。这种方法通过直接操作网卡配置文件实现,并提供了完整的示例代码。

方法一:直接一条Linux shell命令就可以修改,立即生效,但是只是暂时的。

方法二:直接修改网卡配置文件,就是长久的。

 

改好文件后,记得重启一下网卡,这样才能生效。

方法三:用C语言实现上面方法二的操作。

/*jupiter*/
//数组可以直接放想要修改的值 //比如
char IP[20]={0};           //char IP[20]="192.168.0.157";
char netmask[20]={0};      //char netmask[20]="255.255.255.0";
char gateway[20]={0};

void setip(char *buffer,char *netbuf,char *gatebuf)
{
	char * FILE_NAME = "/etc/network/interfaces";
	FILE * file_fd;
	//int len = 0;
	file_fd = fopen(FILE_NAME,"r+");
	if(file_fd == NULL)
	{
		perror("errno");
	}
	//跳过开头的172个字节
	fseek(file_fd,172,SEEK_CUR);
	fwrite(buffer,strlen(buffer),1,file_fd);
	//printf("offset1=%d\n",ftell(file_fd));   //可以打印出来看当前文件位置标识符的值
	fseek(file_fd,10,SEEK_CUR);
	fwrite(netbuf,strlen(netbuf),1,file_fd);
	//printf("offset2=%d\n",ftell(file_fd));
	fseek(file_fd,10,SEEK_CUR);
	fwrite(gatebuf,strlen(gatebuf),1,file_fd);
	//printf("offset3=%d\n",ftell(file_fd));
    fclose(file_fd);
}

int main()
{  
    setip(IP,netmask,gateway);
    system("/etc/init.d/networking restart");   //调用linux的shell命令重启网卡
    //直接用字符串的不用下面几句,如果IP等数据是后续自己通过别的方式填的,就要注意是否需要给字符串加结束符,保证二次修改IP不会出现问题。
    IP[0]='\0';           
    netmask[0]='\0';
    gateway[0]='\0';
}

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值