要使用网络通讯,所以不可避免的要用到dhcp。理想的网络通讯方式是下面3种都要支持:

  1,接入已有网络。这便要求可以作为dhcp客户端。

  2,作为DHCP服务器,动态分配IP。

简单说下前2种情况。

  使用步骤:

  (1)在内核的网络项里面把DHCP配置上;

  (2)在busybox里面把[*]udhcp server(udhcpd)

  [*]udhcp client(udhcpc)都选上。

  udhcpd就是终端设备作为DHCP服务器

  udhcpc就是终端设备作为DHCP客户端

  busybox里面对dhcp都已经给出例子了,

  [zhh@localhost busybox-1.14.1]$ ls ./examples/udhcp/

  sample.bound  sample.deconfig  sample.nak  sample.renew  sample.script  simple.script  udhcpd.conf

  比如使用udhcpc时

  就可以直接把simple.script拿来使用,改不改名字都可以,busybox里面默认的目录文件是/usr/share/udhcpc/default.script

  可以查看下帮助

  # udhcpc --help

  BusyBox v1.14.1 (2010-01-22 10:35:16 CST) multi-call binary

  Usage: udhcpc [-Cfbnqtvo] [-c CID] [-V VCLS] [-H HOSTNAME] [-i INTERFACE]

  [-p pidfile] [-r IP] [-s script] [-O dhcp-option]... [-P N]

  -V CLASSID      Vendor class identifier

  -i INTERFACE    Interface to use (default: eth0)

  -H,-h HOSTNAME  Client hostname

  -c CLIENTID     Client identifier

  -C              Suppress default client identifier

  -p file         Create pidfile

  -r IP           IP address to request

  -s file         Run file at DHCP events (default /usr/share/udhcpc/default.script)

  -t N            Send up to N request packets

  -T N            Try to get a lease for N seconds (default 3)

  -A N            Wait N seconds (default 20) after failure

  -O OPT          Request DHCP option OPT (cumulative)

  -o              Do not request any options (unless -O is also given)

  -f              Run in foreground

  -b              Background if lease is not immediately obtained

  -S              Log to syslog too

  -n              Exit with failure if lease is not immediately obtained

  -q              Quit after obtaining lease

  -R              Release IP on quit

  -P N            Use port N instead of default 68

  -a              Use arping to validate offered address

  #

  这样就很好理解了。

  下面就说说使用udhcpd,同样可以直接把busybox自带的udhcpd.conf作为参考,怎么设置该文件就不详述了,去参考相关文档即可。看看udhcpd怎么使用

  # udhcpd --help

  BusyBox v1.14.1 (2010-01-22 10:35:16 CST) multi-call binary

  Usage: udhcpd [-fS] [-P N] [configfile]

  DHCP server

  -f      Run in foreground

  -S      Log to syslog too

  -P N    Use port N instead of default 67

  帮助一目了然。

  我使用的时候直接

  #udhcpd /etc/udhcpd.conf

  即可。

  还有一个租约文件要简要说说,使用udhcpd时会要求建立一个租约文件,按照提示创建一个就行了,它起什么作用呢?就是为了记录客户端所获得的IP,如果没有租约文件,则会重新给客户端分配一个新IP,如果有,则使用原先分配的IP。

例如:udhcpc -i wlan0 是获取wlan0的ip地址,如果想获取之后直接退出,添加 -q参数,即:udhcpc -q -i wlan0

udhcpc切换到后台

它自带参数可以实现该功能。如下:

udhcpc -b -i eth0 -p /var/run/udhcpc.pid -R

解释一下,-b就是切换到后台指令,-i是指定使用哪个网络接口,双网卡的时候一定要使用它来指定eth0  or  eth1。

对于 -R参数,其实也很重要,在关闭udhcpc时,可以向dhcpserver发送release取消租约。

udhcpc scripts

Here's some debian scripts I wrote for udhcpc 0.9.6. I wanted to make it easy to run local scripts for DHCP changes so I created /etc/udhcpc.d. All the /usr/share/udhcpc/default.* scripts have been merged into /etc/udhcpc.d/S50default. S99local is an example script that patches resolv.conf and calls a DNS update script.

/etc/init.d/udhcpc /etc/udhcpc.script /etc/udhcpc.d/S50default /etc/udhcpc.d/S99local  
  
http://udhcp.busybox.net/README.udhcpc  
udhcp client (udhcpc) --------------------   The udhcp client negotiates a lease with the DHCP server and notifies a set 
of scripts when a leases is obtained or lost. command line options ------------------- The command line options for
the udhcp client are: -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
If the requested IP address cannot be obtained, the client accepts the address that the server offers. udhcp client scripts
------------------- When an event occurs, udhcpc calls the action script. The script by default is /usr/share/udhcpc/default.script
but this can be changed via the command line arguments. The three possible arguments to the script are: deconfig: This argument
is used when udhcpc starts, and when a leases is lost. The script should put the interface in an up, but deconfigured state, ie:
ifconfig $interface 0.0.0.0. bound: This argument is used when udhcpc moves from an unbound, to a bound state. All of the paramaters
are set in enviromental variables, The script should configure the interface, and set any other relavent parameters (default gateway,
dns server, etc). renew: This argument is used when a DHCP lease is renewed. All of the paramaters are set in enviromental variables.
This argument is used when the interface is already configured, so the IP address, will not change, however, the other DHCP paramaters,
such as the default gateway, subnet mask, and dns server may change. nak: This argument is used with udhcpc receives a NAK message.
The script with the deconfig argument will be called directly afterwards, so no changes to the network interface are neccessary.
This hook is provided for purely informational purposes (the message option may contain a reason for the NAK). The paramaters for
enviromental variables are as follows: $HOME - The set $HOME env or "/" $PATH - the set $PATH env or "/bin:/usr/bin:/sbin:/usr/sbin"
$1 - What action the script should perform interface - The interface this was obtained on ip - The obtained IP siaddr - The bootp next
server option sname - The bootp server name option boot_file - The bootp boot file option subnet - The assigend subnet mask timezone -
Offset in seconds from UTC router - A list of routers timesvr - A list of time servers namesvr - A list of IEN 116 name servers dns -
A list of DNS server logsvr - A list of MIT-LCS UDP log servers cookiesvr - A list of RFC 865 cookie servers lprsvr - A list of LPR
servers hostname - The assigned hostname bootsize - The length in 512 octect blocks of the bootfile domain - The domain name of the
network swapsvr - The IP address of the client's swap server rootpath - The path name of the client's root disk ipttl - The TTL to use
for this network mtu - The MTU to use for this network broadcast - The broadcast address for this network ntpsrv - A list of NTP
servers wins - A list of WINS servers lease - The lease time, in seconds dhcptype - DHCP message type (safely ignored) serverid -
The IP of the server message - Reason for a DHCPNAK tftp - The TFTP server name bootfile - The bootfile name additional options are
easily added in options.c. note on udhcpc's random seed --------------------------- udhcpc will seed its random number generator
(used for generating xid's) by reading /dev/urandom. If you have a lot of embedded systems on the same network, with no entropy, you can
either seed /dev/urandom by a method of your own, or doing the following on startup: ifconfig eth0 > /dev/urandom in order to seed
/dev/urandom with some data (mac address) unique to your system. If reading /dev/urandom fails, udhcpc will fall back to its old behavior
of seeding with time(0). signals accepted by udhcpc ------------------------- udhcpc also responds to SIGUSR1 and SIGUSR2.
SIGUSR1 will force a renew state, and SIGUSR2 will force a release of the current lease, and cause udhcpc to go into an inactive state
(until it is killed, or receives a SIGUSR1). You do not need to sleep between sending signals, as signals received are processed
sequencially in the order they are received. compile time options ------------------- options.c contains a set of dhcp options
for the client: name[10]: The name of the option as it will appear in scripts flags: The type of option, as well as if it will be
requested by the client (OPTION_REQ) code: The DHCP code for this option 使用busybox下的simple.script    
进入busybox目录:busybox1.19.2/example/udhcp/,拷贝文件simple.script到根文件系统的/usr/share/udhcpc/目录下,
更名为default.script,再将default.script中resolv_conf=”/etc/resolv.conf”更改为resolv_conf=”/tmp/resolv.conf”。   
(说明:由于测试使用cramfs文件系统,etc目录不可写,运行udhcpc无法在/etc目录下创建resolv.conf文件。)

udhcpc命令的更多相关文章

  1. udhcpc命令【转】

    udhcpc -i usb0 route 转自:http://blog.csdn.net/hshl1214/article/details/8684740 由于要使用网络通讯,所以不可避免的要用到dh ...

  2. 如何使用Linux命令dhclient

    如何使用Linux命令 dhclient The Internet Systems Consortium DHCP Client, dhclient, provides a means for con ...

  3. udhcpc和udhcpd移植

    实现DHCP自动获取IP地址 前提:系统已经实现DNS(即使用ping www.baidu.com测试时能ping通). 1.  在内核中添加以下选项: Networking  ---> [*] ...

  4. Linux udhcp client (udhcpc) get IP at anytime

    /*************************************************************************************** * Linux udh ...

  5. FL2440 rt3070模块station模式动态获取IP地址

    ---------------------------------------------------------------------------------------------------- ...

  6. arm linux 移植 udhcp 与 使用

    背景 在一些网络环境下,需要静态IP不够现实,需要使用DHCP进行自动获取IP地址. udhcpc是一个面向嵌入式系统的非常小的DHCP客户端,字母的缩写微μ- DHCP -客户端client(μDH ...

  7. iMX287A基于嵌入式Qt的新冠肺炎疫情监控平台

    目录 1.前言 2.数据接口的获取 3.Qt界面的实现 4.在开发板上运行Qt程序 5.最终效果 6.代码下载 @ 1.前言 之前我使用在桌面版本Qt实现了肺炎疫情监控平台:基于Qt的新冠肺炎疫情数据 ...

  8. wifi配置常用命令总结

    1:iwlist eth1 scanning 查看无线路由 2:iwconfig eth1 essid "无线路由的名称" 3: ifconfig eth1 IP 4: route ...

  9. linux下启动和关闭网卡命令及DHCP上网

    ifup.ifdown:如果在 /etc/sysconfig/network-scripts里面的ifcfg-ethx等文件存在的话,就可以通过ifdown或ifup来实现网卡的开和关,例如:ifup ...

随机推荐

  1. Javascript中判断变量是数组还是对象(array还是object)

    怎样判断一个JavaScript变量是array还是obiect? 答案: 1.如果你只是用typeof来检查该变量,不论是array还是object,都将返回‘objec'. 此问题的一个可行的答案 ...

  2. IDEA使用switch传入String编译不通过

    今天在使用IDEA的时候,用到switch分支语句,传入String参数的时候一直报错,下面是源码报错截图: 看错误提示并没有提到switch支持String类型,不过ava1.7之后就支持Strin ...

  3. 【题解】APIO2014回文串

    哇哦~想不到我有生之年竟然能够做出字符串的题目ヾ(✿゚▽゚)ノ虽然这题比较裸但依然灰常开心! 首先有一个棒棒的性质:本质不同的回文串最多有 O(n) 个.首先 manacher 把它们都找出来,然后问 ...

  4. [AT2064] [agc005_f] Many Easy Problems

    题目链接 AtCoder:https://agc005.contest.atcoder.jp/tasks/agc005_f 洛谷:https://www.luogu.org/problemnew/sh ...

  5. 【MVVM Dev】ComboBox嵌入CheckBox的显示问题

    一.前言 在ComboBox中嵌入若干个CheckBox时,当我们勾选一些CheckBox,ComboBox会显示相应的勾选项. 例如:CheckBox项有A,B,C   那么勾选这三项,ComboB ...

  6. 【BZOJ1065】【NOI2008】奥运物流(动态规划)

    [BZOJ1065][NOI2008]奥运物流(动态规划) 题面 BZOJ 洛谷 题解 先不考虑环的情况,于是变成了一棵树. 这样子我们答案的贡献是\(\sum_{i=1}^nC_i\times k^ ...

  7. 【BZOJ3672】【NOI2014】购票(线段树,斜率优化,动态规划)

    [BZOJ3672][NOI2014]购票(线段树,斜率优化,动态规划) 题解 首先考虑\(dp\)的方程,设\(f[i]\)表示\(i\)的最优值 很明显的转移\(f[i]=min(f[j]+(de ...

  8. Unity3D手游开发日记(1) - 移动平台实时阴影方案

    阴影这个东西,说来就话长了,很多年前人们就开始研究出各种阴影技术,但都存在各种瑕疵和问题,直到近几年出现了PSSM,也就是CE3的CSM,阴影技术才算有个比较完美的解决方案.Unity自带的实时阴影, ...

  9. 传说中的 SonarLint

    Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的 ...

  10. Python3 字典 fromkeys()方法

     Python3 字典 描述 Python 字典 fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值. 语法 fromkeys()方法语法: ...