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

    xiaoxiao2021-03-25  118

    经过几天折腾,摸索完成了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=x:x:x:x:x:x",  &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=X:X:X:X:X:X\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=x:x:x:x:x:x\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= \"X:X:X:X:X:X\"></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> </p><p> </p>"); printf("</table>"); printf("</body>"); printf("</html>\r\n"); fflush(stdout);     return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-20521.html

    最新回复(0)