ubuntu20.04 c语言修改ip地址
时间: 2023-07-29 21:11:15 浏览: 103
Ubuntu 20.04修改ip地址
在 Ubuntu 20.04 上,可以使用以下 C 语言代码修改 IP 地址:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <net/if.h>
int main(int argc, char *argv[]) {
if (argc != 3) {
printf("Usage: %s [interface name] [ip address]\n", argv[0]);
return 1;
}
char *interface_name = argv[1];
char *ip_address = argv[2];
int sockfd;
struct ifreq ifr;
struct sockaddr_in *sin;
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0) {
perror("socket");
return 1;
}
strncpy(ifr.ifr_name, interface_name, IFNAMSIZ - 1);
ifr.ifr_name[IFNAMSIZ - 1] = '\0';
sin = (struct sockaddr_in *)&ifr.ifr_addr;
sin->sin_family = AF_INET;
sin->sin_port = 0;
inet_pton(AF_INET, ip_address, &sin->sin_addr);
if (ioctl(sockfd, SIOCSIFADDR, &ifr) < 0) {
perror("ioctl");
return 1;
}
printf("IP address of %s is set to %s\n", interface_name, ip_address);
close(sockfd);
return 0;
}
```
使用方法:
1. 编译代码:`gcc -o change_ip change_ip.c`
2. 运行代码:`sudo ./change_ip [interface name] [ip address]`
其中,[interface name] 为要修改 IP 地址的网络接口名,[ip address] 为新的 IP 地址。
需要注意的是,运行该代码需要使用 sudo 权限,否则会提示权限不足的错误。
阅读全文