1.拼凑成指令实现:
#include <string.h>
#include <stdlib.h>
int main(void)
{
char IP[24] = "192.168.1.225";
char Mask[24] = "255.255.0.0";
char gateway[24] = "10.240.0.0";
char cmd_IP_Mask[64] = {0};
char cmd_GW[64] = {0};
sprintf(cmd_IP_Mask, "ifconfig eth0 %s netmask %s", IP, Mask);
sprintf(cmd_GW, "route add default gw %s netmask %s", gateway);
system(cmd_IP_Mask);
system(cmd_GW);
return 0;
}
2.从文件中获取IP地址,然后设置IP:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define FILE_NAME "ip.txt"
int main(void)
{
FILE *fp;
char IP[20];
char Mask[20];
char gateway[20];
char cmd_IP_Set[64] = {0};
char cmd_GW[64] = {0};
if( (fp=fopen(FILE_NAME,"r"))==NULL )
{
printf("Open %s failed ! \n", FILE_NAME);
exit(0);
}
fgets(IP, 20, fp);
fgets(Mask, 20, fp);
fgets(gateway, 20, fp);
printf("IP : %s ", IP);
printf("Mask : %s ", Mask);
printf("gateway : %s \n", gateway);
sprintf(cmd_IP_Set, "ifconfig eth0 %s", IP);
system(cmd_IP_Set);
sprintf(cmd_IP_Set, "ifconfig eth0 netmask %s", Mask);
system(cmd_IP_Set);
sprintf(cmd_IP_Set, "route add default gw %s", gateway);
system(cmd_IP_Set);
return 0;
}
2.从文件中获取IP地址,检测IP地址的合法性,然后设置IP:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#define FALSE 0
#define TRUE 1
#define FILE_NAME "ip.txt"
#if 1
int is_valid_ip_address(const char *addr)
{
int num= 0;
int i = 0, j = 0;
int value;
char buf[4] ;
int count = 0;
int k =0,m=0;
char test_num[20] = {0};
while ( *(addr + i) )
{
if ( *(addr + i) == '.' )
{
++count;
if(((count == 3) && (strlen(addr + i)>6))
||(count > 3))
{
printf(" count = %d ******** %s %d\n", count, (addr + i),strlen(addr + i));
return FALSE;
}
}
++i;
}
i = j = value = count = 0;
memset(buf, 0, sizeof(buf));
while ( *(addr + i) )
{
++num;
//printf("^^^^^^^^^^^^^^^^^^^^^ %d \n",*buf);
while ((*(addr + i) != '.') && (i< 15))
{
//printf("i = %d ",i);
printf("num = %d %x \n",num, atoi(addr + i));
if(*(addr + i) == 0x0d) // windows.
{
if(*(addr + i+1) == 0x0a)
{
printf("*************\n");
break;
}
}
if(*(addr + i) == 0x0a) // linux.
{
if(*(addr + i-1) != 0x0d)
{
printf("222*************\n");
//++i;
//continue;
break;
}
}
/*if(num == 4)
{
sprintf(test_num,"%x", (addr + i));
printf(">>>>>>> : %s \n" test_num);
}*/
//printf(" ******** %d %s %d\n", i, (addr + i),strlen(addr + i));
printf("@@@@@@@@@ :%s \n",(addr + i));
if (( ! isdigit(*(addr + i)) ) && (num != 4))
{
printf("111111111\n");
//printf(" %s %d\n", (addr + i),strlen(addr + i));
return FALSE;
}
*(buf + j) = *(addr + i);
++i;
++j;
}
*(buf + j) = '\0';
//if(num == 4)
///{
//printf("num = %d \n",num);
//for(k=0;k<j;++k)
//printf("## %02x ",*buf);
//}
printf("\n^^^^^^^^^^^ %s %d \n",buf,strlen(buf));
value = atoi(buf);
if ( (value > 255) || (value < 0) )
{
printf("222222222\n");
return FALSE;
}
if ( *(addr + i) == '.' )
{
++count;
printf("pinggle come here : %d \n", count);
printf("i = %d \n",i);
++i;
j = 0;
memset(buf, 0, sizeof(buf));
continue;
}
else
{
break;
}
}
printf("buf = %s %d \n",buf, strlen(buf));
//m = strlen(buf)-2;
m = strlen(buf);
for(k=0;k<m;++k)
{
printf("%c ", buf[k]);
printf(" chech ! \n");
if ( ! isdigit(buf[k]) )
{
printf("444: %d \n",num);
return FALSE;
}
}
return TRUE;
}
#endif
#if 0
int is_valid_ip_address(const char *str)
{
printf("%s >>>>>>>>> \n",str);
#if 1
struct in_addr addr;
int ret;
volatile int local_errno;
errno = 0;
ret = inet_pton(AF_INET, str, &addr);
local_errno = errno;
if (ret > 0)
fprintf(stderr, "\"%s\" is a valid IPv4 address\n", str);
else if (ret < 0)
fprintf(stderr, "EAFNOSUPPORT: %s\n", strerror(local_errno));
else
fprintf(stderr, "\"%s\" is not a valid IPv4 address\n", str);
return ret;
#endif
}
#endif
int main(void)
{
FILE *fp;
char IP[20];
char Mask[20];
char gateway[20];
char cmd_IP_Set[64] = {0};
char cmd_Mask[64] = {0};
char cmd_GW[64] = {0};
if( (fp=fopen(FILE_NAME,"r"))==NULL )
{
printf("Open %s failed ! \n", FILE_NAME);
exit(0);
}
fgets(IP, 20, fp);
fgets(Mask, 20, fp);
fgets(gateway, 20, fp);
//printf("check : %d \n",is_valid_ip_address(IP));
if(is_valid_ip_address(IP))
{
printf("IP address is Valid ! \n");
printf("IP : %s ", IP);
printf("Mask : %s ", Mask);
printf("gateway : %s \n", gateway);
sprintf(cmd_IP_Set, "ifconfig eth0 %s", IP);
system(cmd_IP_Set);
// printf("set ip return : %d \n",system(cmd_IP_Set));
sprintf(cmd_IP_Set, "ifconfig eth0 netmask %s", Mask);
system(cmd_IP_Set);
// printf("set netmask return : %d \n",system(cmd_IP_Set));
sprintf(cmd_GW, "route add default gw %s", gateway);
system(cmd_GW);
// printf("set wg is %d \n",system(cmd_GW));
printf("Set IP address OK ! \n");
}
else
{
printf("Error : IP address is Invalid ! \n");
printf("Set IP address Failed ! \n");
}
return 0;
}
说明:子网掩码和网关未做检查,当IP地址和网关不在同一网段时,IP设置正确,网关会设置失败。这个与子网掩码有关,但本程序还未实现此种情况的判断,望后来者可以补上。
分享到:
相关推荐
Linux和PIC单片机为平台,通过串口编程、网络编程和进程间通信等方法,实 现了网关的功能。结果表明,ZigBee无线网络与互联网相互通信是可行的,这种模 式将会广泛应用于工业控制、家庭监护等领域。 一文 章 最 后对...
本书介绍如何在Linux下建立,运行并维护站点的综合技术,它适合于有一定的Linux或Linux基本操作基础的网络建立者。 本书从建站的准备工作开始,写到建立功能强大的INTERNET网站,层层深入,涉及到网站建设中所遇到的...
在分析嵌入式WEB服务器原理的基础上,讨论并提出一种实现远程设备监控的方法,设计出一种基于“ARM+ARMLinux”操作系统的嵌入式WEB服务器系统,给出其软硬件设计和一些关键的实现细节。
#!/usr/bin/python #auto change gateway Created By mickelfeng import os import random,re\ng='gateway 192.168.1.' ...GW = %s%d%(g,rand) PingTest = 'ping -c 3 ' + test try: result=os.system(...
6.5 在单用户模式下引导 234 第7章 登录和注销 236 7.1 通过终端登录 236 7.2 通过网络登录 237 7.3 登录的意义 237 7.4 访问控制 238 7.5 外壳的启动 238 第8章 用户账号的管理 239 8.1 何谓账号 239 8.2 ...
使用shell校验IP地址合法性 使用方法: 代码如下:[root@yang python]# bash check_ip.sh IP地址执行结果:返回值0校验合法,非0不合法。shell代码: 代码如下:[root@yang python]# vi check_ip.sh #!/usr/bin/...
国外计算机科学教材系列·用TCP/TP进行网际互联(第3卷):客户-服务器编程与应用(Linux.POSIX套接字版)》的特点是:强调原理、概念准确、深入浅出、内容丰富且新颖。全书共分为三卷。第三卷主要讨论应用软件如何使用...
在Linux操作系统中,内核中有一个路由表,它包含若干条路由记录,这些记录由子网IP、子网掩码、网关IP和接口名等组成,这些信息用于将数据包转发到其他子网或者连接到互联网;本文介绍了当需要转发数据包时,Linux...
(2)再依次选“默认Web站点→右键→属性→Web站点”,单击“IP地址”右侧的“高级”按钮,在“此站点有多个标识下”双击已有的那个IP地址(或单击选中它后再按“编辑”按钮),然后在“主机头名”下输入...
该系统的硬件部分主要由主处理器单元、数字交换网络、逻辑处理单元、接入处理单元四部分组成,软件部分基于Linux操作系统进行开发编程,能够实现对E1信号的时隙交换和IP域转换功能。实际应用表明,该系统具有操作...
在说明每一种客户-服务器设计时部加以详细的示例,这些示例在Linux系统中已经过测试,并且可以在网上下载书中的所有代码 验证了应用网关和隧道技术等高级技术 详细解释了远程过程调用(RCP)以及如何用于构建...
此目录包含库的源代码,用于构建...包转发器是运行在 Lora 网关主机上的程序,它将集中器接收到的 RF 包通过 IP/UDP 链路转发到服务器,并发出服务器发送的 RF 包。 更多详情、使用方法,请下载后阅读README.md文件
这些是用于构建MMDVMHost的源文件,该文件在一侧与MMDVM或DVMega接口,而在另一侧与合适的网络连接。 它支持MMDVM上的D-Star,DMR,P25 Phase 1,NXDN,System ... 它基于32位和64位Linux以及在x86和x64上使用Visua
VOIP(Voice over IP)技术可以将传统电信语音信号在IP网上传输,通过互联网连接不同地理位置的网关,实现传统语音通话网络与IP网络的资源共享。为了实现传统语音通信网络与IP网的互联,各网关之间需要使用SIP协议...
使用Jung / Gira eNet Mobile Gate无线IP网关控制Jung / Gira eNet智能家居设备( )或Jung / Gira eNet智能家居服务器。 变更日志 1.0.52(2021-03-23) (stoffel7)修复了一些错误(deltree.fct,valueChanged ....
(VIAGO为自动批处理文件,45为您要设置的客户机IP的最后一位数,前面的192.168.5不用 输入的,输入为自后自动激活网卡,及IP奄码配置文件,自动生成IP地址为 192.168.5.45 子奄码为:255.255.255.0 网关:192.168.5.100),...
A:ARP协议是无状态的不经验证把IP地址和MAC地址映射写入缓存 B:伪造IP地址和MAC地址映射关系来实现ARP欺骗 C:在网关上设置MAC地址绑定,合理划分VLAN,无法放置IP地址盗用 D:安装防病毒软件和ARP防火墙,可以查杀ARP...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
2012-06-11 21:10 4,371 更改网关IP.rar 2012-06-11 20:57 1,419 栈的实现.txt 2012-06-11 21:18 57,078 汇编数显大型交通灯控制.rar 2012-06-11 21:35 1,055,980 流量计算.rar 2012-06-11 21:11 8,198,339 王凡的...