嵌入式系统中通过pppd拨号后的dns设置
来源:互联网 发布:西班牙语离线翻译软件 编辑:程序博客网 时间:2024/06/10 11:20
系统环境说明:linux 2.6.30,pppd 2.4.5 ,syslog
使用3g拨号方式进行网络连接,操作参考 http://www.west263.com/www/info/18303-1.htm ,pppd拨号成功后通过读取/var/log/messages内容,在/var/log/messages查找“DNS address”关键字,将关键字后面的dns地址输入到/etc/resolv.conf文件中,文件格式
domain your.isp.domain.name
nameserver 192.168.1.1
nameserver x.x.x.x
,然后使用ping尝试通过域名连接服务器。
#include<stdio.h>
#include<stdlib.h>#include<string.h>
FILE *ppp_fb=NULL;
char Dns1[128];
char Dns2[128];
int get_dns(char *dns,char *key,char *msg)
{
int pos=0;
int len=0;
int key_len=0;
int i;
len=strlen(msg);
key_len=strlen(key);
if(len<=0||key_len<=0)
return -1;
for(i=key_len;i<len;i++)
{
if(msg[i]=='.'||(msg[i]>='0'&&msg[i]<='9'))
{
dns[pos]=msg[i];
pos++;
}
}
}
int check_ppp_log(FILE *fb)
{
char log_message[1024];
int log_message_pos=0;
char check_key[]="DNS address";
char *p=NULL;
char ch;
while(feof(fb)==0)
{
ch=fgetc(fb);
if(ch=='\n')
{
if(log_message_pos<=0)
continue;
else
{
p=strstr(log_message,check_key);
if(p!=NULL)
{
p=NULL;
p=strstr(log_message,"primary");
if(p==NULL)
{
p=strstr(log_message,"secondary");
if(p!=NULL)
{
printf("p len = %d\n",strlen(p));
printf("dns2=%s\n",p);
get_dns(Dns2,"secondary DNS address",p);
}
}
else
{
printf("p len = %d\n",strlen(p));
printf("dns1=%s\n",p);
get_dns(Dns1,"secondary DNS address",p);
}
}
}
log_message_pos=0;
memset(log_message,0,1024);
}
else
{
log_message[log_message_pos]=ch;
log_message_pos=log_message_pos+1;
}
}
return 0;
}
int main(void)
{
int ret=-1;
char file_app[]="/var/log/messages";
char buf[64];
char cmd[512];
memset(buf,0,64);
printf("start\n");
if((ppp_fb = fopen(file_app, "r")) == NULL)
{
printf("can't open %s\n",file_app);
exit(2);
}
printf("check_ppp_log\n");
ret=check_ppp_log(ppp_fb);
if(ret==-1)
{
printf("Not found DNS address\n");
fclose(ppp_fb);
exit(2);
}
printf("fclose ok\n");
fclose(ppp_fb);
printf("DNS1 = %s; DNS2 = %s\n",Dns1,Dns2);
system("cp /etc/resolv.conf /etc/resolv.conf_back");
sleep(1);
memset(cmd,0,512);
sprintf(cmd,"echo \"nameserver %s\" >> /etc/resolv.conf",Dns1);
system(cmd);
memset(cmd,0,512);
sprintf(cmd,"echo \"nameserver %s\" >> /etc/resolv.conf",Dns2);
system(cmd);
sleep(1);
system("ping www.XXXXX.com");
return 0;
}
- 嵌入式系统中通过pppd拨号后的dns设置
- pppd 拨号脚本设置 拨号讲解
- 嵌入式 PPPD拨号脚本详解摘录
- PPPD拨号
- 嵌入式 PPPD工具实现3G拨号实践以及工具PPPD和CHAT详解摘录
- XP系统中PPPOE拨号如何设置?
- pppd拨号脚本配置
- pppd拨号脚本配置
- pppd拨号脚本配置
- pppd拨号脚本配置
- pppd拨号3G设备
- GPRS实现pppd拨号
- pppd拨号3G设备
- 嵌入式Linux下pppd通过GPRS拨号上网(CLM920模块)
- 嵌入式 hi3518c平台SIMCOM5360E型号3G模块移植使用PPPD拨号(待续)
- 嵌入式 hi3518c,3g-sincom5360e平台pppd成功拨号联通3G示例
- pppd拨号创建新的plugin定制自己的拨号软件
- linux pppd 3g 拨号记录
- js 实现繁体和简体之间的转换
- 百度地图之地址信息和坐标的转换
- 自己写的HTML5 canvas动画制作函数,非常简单易懂
- The format of string resources
- Linux cat 命令
- 嵌入式系统中通过pppd拨号后的dns设置
- 新插件CopyPC2U已经完成!
- django admin manytomany获取所选字段值
- iOS开发者必备:九大设计类工具
- Highcharts 参数设置
- C++Builder中大尺寸图象的显示技巧
- 一点一点重学统计学(三)——假设检验
- JS对象属性有两种寻址方式
- IOS学习笔记52-- CGContextRef 基本认识点