udhcpc 的使用
http://blog.csdn.net/guoyaoyao1990/article/details/12096567
一、设备作为dhcp客户端连接:
udhcpc 由busybox配置系统时,选择网络服务中的udhcpc。
当没有网络的时候,板子一直发送dhcp请求,导致程序不往下执行,解决的办法是把它切换到后台运行,可是如何切换到后台呢,有办法,它自带参数可以实现该功能。如下:
udhcpc -b -i eth0 -p /var/run/udhcpc.pid
解释一下,-b就是切换到后台指令,-i是指定使用哪个网络接口,双网卡的时候一定要使用它来指定eth0 or eth1
-c, --clientid=CLIENTID Client identifier -H, --hostname=HOSTNAME Client hostname -h, Alias for -H -f, --foreground Do not fork after getting lease -b, --background Fork to background if lease cannot be immediately negotiated. -i, --interface=INTERFACE Interface to use (default: eth0) -n, --now Exit with failure if lease cannot be immediately negotiated. -p, --pidfile=file Store process ID of daemon in file -q, --quit Quit after obtaining lease -r, --request=IP IP address to request (default: none) -s, --script=file Run file at dhcp events (default: /usr/share/udhcpc/default.script) -v, --version Display version
调用udhcpc执行的命令:
udhcpc -i eth2 -p eth2.pid -s udhcpc.script -b -a -T 1
-s 后面是执行脚本。执行脚本里面,通过环境变量,获取我们需要的各种网络参数。linux平台下,我们通过如下方法获取网络参数。
可执行脚本通过dhcp的源码dhcpc.c 里面的udhcp_run_script函数调用,函数的第二个参数就是可执行脚本的传入参数。 传入状态有
"deconfig"、"renew"、"bound"等几种。
if ($argv[1] == "renew" || $argv[1] == "bound")
{
$netmask=getenv("subnet"); $broadcast=getenv("broadcast"); $interface=getenv("interface"); $ip=getenv("ip"); $router=getenv("router"); $dns=getenv("dns"); $dns_pri=""; $dns_sec="";
}
然后,在脚本中,通过system命令,把ip,broadcast,device,via等信息加入系统中。这样就可以通过dhcp上网了。
关闭udhcpc相关的服务:
从eth*.pid中读出进程号,然后调用kill命令,杀死该进程。 kill *;
二、设备作为dhcp服务器:
(1)、创建dhcpd.conf文件;
(2)、启动dhcp服务时:
首先:rm dhcpd.pid;
然后,开启dhcp服务: dhcpd -4 -cf dhcpd.conf -lf dhcpd.leases -pf dhcpd.pid; 开启dhcpd还可以用service或/etc/init.d/dhcpd命令。
(3)、关闭dhcp服务,killall dhcpd;
以上这种做法是针对单lan的dhcp服务。如果要改成多lan的,可以在禁用某个lan的dhcp服务时,删除全部dhcp.conf文件,并重写conf文件,然后,再重新启动dhcp服务;
另一种做法,熟悉dhcpd的传入参数,针对某个lan口,做对应的dhcp操作(较复杂)。
udhcpc 的使用相关推荐
- linux udhcpc指令,dhcpclient和udhcpc区别和用法
udhcpc: 1.开发板支持的指令,内核移植时通过make menuconfig打开或关闭,并且需要修改Busybox 2.udhcpc只作为客户端使用,服务器指令为udhcpd. 3.使用方法 - ...
- udhcpc 后台运行的方法【总结】
最近在做项目的时候卡在了dhcp处,当没有网络的时候,板子一直发送dhcp请求,导致程序不往下执行,解决的办法是把它切换到后台运行,可是如何切换到后台呢,有办法,它自带参数可以实现该功能.如下: ud ...
- WIFI驱动移植--udhcpc获取IP
在使用wpa工具连接WIFI的时候,一般采用DHCP方式自动获取设备ip. 在运行完udhcpc命令后,发现获取到了IP,但是ifconfig一看,还是没有IP信息. 在获取IP后需要配置脚本设置ip ...
- udhcpc不配置默认网关问题解决
问题现象 设备里的http server运行了CGI,在设置eth0为DHCP之后,怎么也没有默认路由信息.CGI调用的脚本最终是使用udhcpc,在shell里手工运行udhcpc总是能够自动设置默 ...
- 开发板udhcpc获取不到广电网络数字电视机顶盒ip问题解决
遇到一款广电网络数字电视机顶盒,板子无法获取到它的ip, udhcpc一直在查找却获取不到, 此机器如下图: 原因是某个数据包太大了,udhcpc无法全部装下, 解决方法是在配置busybox时,设置 ...
- 编译udhcpc for ARM_linux
官网下载BusyBox 解压 make allnoconfig 最小配置 make menuconfig 打开图形配置界面 选择Networking Utilityies –>[*]dhcp c ...
- Linux镜像USB转网口驱动模块配置
最近在调试USB转网口,涉及到Linux内核编译配置文件的更改,记录一下调试过程. 首先需要了解USB设备接入后系统的识别信息,打印内核日志: root@MyDevice:/# dmesg | tai ...
- qemu模拟Cortex-A57运行Linux4.5.1
主机运行操作系统,deepin15.1.1 http://www.deepin.org/ 1.安装qemu sudo apt-get install qemu-system-arm 2.安装arm编译 ...
- 嵌入式linux dhcp移植,嵌入式linux中的dhcp服务器
嵌入式系统下,用开发板建立dhcp服务器 1.重新编译内核,添加对dhcp的支持 2.busybox是否带有dhcp的应用,如无,则需要重新编译busybox,或者直接下一个独立的也可. 3.dhcp ...
- shell查看并修复网络连接
1. shell监控网卡状态,故障时自动重启网卡 http://blog.slogra.com/post-425.html cat fix_eth0.sh #!/bin/bashcheck_and_ ...
最新文章
- 利用python把成绩用雷达图表示出来
- 日常工作用Python能解决哪些问题?
- struts 模块化开发学习
- JavaScript --- [学习笔记]观察者模式 理解对象 工厂模式 构造函数模式
- 【CSS布局】已知布局元素的高度,写出三栏布局,要求左栏、右栏宽度各为300px,中间自适应。
- 三分钟学会.NET微服务之Polly
- SharePoint 站点集和子站点数据互相读取
- 信号与系统第四章总结
- K均值聚类算法(K-Means)
- 爆款升级当贝NEW D3X来了,画质亮度远超坚果O1S,性能小钢炮实至名归
- ES安装以及基本应用
- 前端css实现气泡框
- Java—sql关于不同条件下合并结果
- 第二届长三角高校数学建模竞赛
- C语言的小tips~
- 用电脑远程给海信智能电视安装软件的办法
- 四年级计算机走进传统节日教案,小学信息技术黔科版四年级上册第一单元 中国传统节日——制作简单电子作品活动3 使用资料制作作品教案...
- SpringMVC(8)——格式化转换器Formatter
- 最佳 React UI 组件库,前端开发必备!
- vcs oracle 双机,赛门铁克VCS(Veritas Cluster Server)双机日常管理,vcsveritas