完成arm-linux busybox httpd cgi实现IP地址、时钟等配置。

经过几天折腾,摸索完成了arm-linxu busybox httpd cgi的实现,完成对开发板的网络参数、时钟、串口进行配置



设置网络参数的cgi程序

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int ip[4];
int mask[4];
int gw[4];
int mac[6];
char str[256];
int i,len;
int reset = 0;
FILE *fp=NULL;
char* queryString = getenv("QUERY_STRING");  
if((queryString != NULL) && (sscanf(queryString, "ip=%d.%d.%d.%d&mask=%d.%d.%d.%d&gw=%d.%d.%d.%d", &ip[0],  &ip[1], &ip[2], &ip[3], &mask[0],  &mask[1], &mask[2], &mask[3], &gw[0],  &gw[1], &gw[2], &gw[3]) ==12)){
fp = fopen("/etc/network/eth0-setting", "rt+");
if(fp!=NULL){
while (!feof(fp)){
fgets(str, 256, fp);
if(sscanf(str, "MAC=%02x:%02x:%02x:%02x:%02x:%02x",  &mac[0],  &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]) == 6){
reset = 1;
break;
}
}
fseek(fp,0,SEEK_SET);
fprintf(fp, "IP=%d.%d.%d.%d\r\n",  ip[0],  ip[1], ip[2], ip[3]);
fprintf(fp, "Mask=%d.%d.%d.%d\r\n",  mask[0],  mask[1], mask[2], mask[3]);
fprintf(fp, "Gateway=%d.%d.%d.%d\r\n",  gw[0],  gw[1], gw[2], gw[3]);
fprintf(fp, "MAC=%02X:%02X:%02X:%02X:%02X:%02X\r\n                                               \r\n",  mac[0],  mac[1], mac[2], mac[3],mac[4], mac[5]);
fclose(fp);
}
}else{ 
fp = fopen("/etc/network/eth0-setting", "r");
if(fp!=NULL){
while (!feof(fp)){
fgets(str, 256, fp);

if(sscanf(str, "IP=%d.%d.%d.%d\r\n",  &ip[0],  &ip[1], &ip[2], &ip[3]) == 4){


}
if(sscanf(str, "Mask=%d.%d.%d.%d\r\n",  &mask[0],  &mask[1], &mask[2], &mask[3]) == 4){
}
if(sscanf(str, "Gateway=%d.%d.%d.%d\r\n",  &gw[0],  &gw[1], &gw[2], &gw[3]) == 4){
}
if(sscanf(str, "MAC=%02x:%02x:%02x:%02x:%02x:%02x\r\n",  &mac[0],  &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]) == 6){


}
}
fclose(fp);
}else{
ip[0] =  192;
ip[1] =  168;
ip[2] =  1;
ip[3] =  100;
mask[0] =  255;
mask[1] =  255;
mask[2] =  255;
mask[3] =  0;
gw[0] =  192;
gw[1] =  168;
gw[2] =  1;
gw[3] =  1;
mac[0] =  11;
mac[1] =  22;
mac[2] =  33;
mac[3] =  44;
mac[4] =  55;
mac[5] =  66;
}
}
printf("Content-Type:text/html\n\n");
printf("<html>\r\n");
printf("<head>");
printf("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />");
printf("<script language=\"javascript\" type=\"text/javascript\" src=\"js.js\"></script>");
printf("<link  rel=\"stylesheet\" type=\"text/css\" href=\"css.css\" />");
printf("</head>");
printf("<body style=\"\" lang=\"EN-US\" link=\"blue\" vlink=\"blue\">");
printf("<div class=\"Section1\">");
printf("<div style=\"margin-left: 30pt;\">");
printf("<div align=\"center\">");
printf("<table width=500; align=\"left\">");
printf("\r\n<table width=500;align=\"left\">");
printf("<td>\r\n");
printf("<form method=\"GET\" action=\"/cgi-bin/set_net.cgi\">\r\n");
printf("<table width=500;align=\"left\">");
printf("<tr><td width=\"90\">IP地址</td><td><input class=\"input-text\" name=\"ip\" value= \"%d.%d.%d.%d\"></td></tr>\r\n", ip[0],  ip[1], ip[2], ip[3]);
printf("<tr><td width=\"90\">子网掩码</td><td><input class=\"input-text\" name=\"mask\" value= \"%d.%d.%d.%d\"></td></tr>\r\n", mask[0],  mask[1], mask[2], mask[3]);
printf("<tr><td width=\"90\">网关地址</td><td><input class=\"input-text\" name=\"gw\" value= \"%d.%d.%d.%d\"></td></tr>\r\n", gw[0],  gw[1], gw[2], gw[3]);
printf("<tr><td width=\"90\">MAC地址</td><td><input class=\"readonly-text\" readonly=\"readonly\" value= \"%02X:%02X:%02X:%02X:%02X:%02X\"></td></tr>\r\n", mac[0],  mac[1], mac[2], mac[3], mac[4], mac[5]);
printf("<tr><td><input type=\"submit\" value=\"提交\"></td>");
if(reset==1)printf("<td><a href=\"../admin/reset.html\">参数已经修改,请手动复位设备</a></td></tr>");
printf("</tr>\r\n");
printf("</form>\r\n");
printf("</td>\r\n");
printf("</table>");
printf("<p>&nbsp;</p><p>&nbsp;</p>");
printf("</table>");
printf("</body>");
printf("</html>\r\n");
fflush(stdout);
    return 0;
}






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄大刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值