【Shell】Linux udhcpc动态获取IP命令详解 前言 由于要使用网络通讯,所以不可避免的要用到dhcp。理想的网络通讯方式是下面3种都要支持: 1,接入已有网络。这便要求可以作为dhcp客户端。 2,作为DHCP服务器,动态分配IP。 3,指定固定IP 第3种情况没有什么好说的,简单说下前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: option requires an argument -- h BusyBox v1.23.2 (2023-07-24 16:54:35 CST) multi-call binary. Usage: udhcpc [-fbqRB] [-t N] [-T SEC] [-A SEC/-n] [-i IFACE] [-s PROG] [-p PIDFILE] [-oC] [-r IP] [-V VENDOR] [-F NAME] [-x OPT:VAL]... [-O OPT]... -i,--interface IFACE Interface to use (default eth0) -s,--script PROG Run PROG at DHCP events (default /usr/share/udhcpc/default.script) -p,--pidfile FILE Create pidfile -B,--broadcast Request broadcast replies -t,--retries N Send up to N discover packets (default 3) -T,--timeout SEC Pause between packets (default 3) -A,--tryagain SEC Wait if lease is not obtained (default 20) -n,--now Exit if lease is not obtained -q,--quit Exit after obtaining lease -R,--release Release IP on exit -f,--foreground Run in foreground -b,--background Background if lease is not obtained -S,--syslog Log to syslog too -r,--request IP Request this IP address -o,--no-default-options Don't request any options (unless -O is given) -O,--request-option OPT Request option OPT from server (cumulative) -x OPT:VAL Include option OPT in sent packets (cumulative) Examples of string, numeric, and hex byte opts: -x hostname:bbox - option 12 -x lease:3600 - option 51 (lease time) -x 0x3d:0100BEEFC0FFEE - option 61 (client id) -F,--fqdn NAME Ask server to update DNS mapping for NAME -V,--vendorclass VENDOR Vendor identifier (default 'udhcp VERSION') -C,--clientid-none Don't send MAC as client identifier Signals: USR1 Renew lease USR2 Release lease 应用 一、udhcpc -i udhcpc是一款用于获取DHCP地址的工具。其中,“-i”选项用于指定需要获取DHCP地址的网络接口名称。 sudo udhcpc -i eth0以上命令表示使用eth0接口获取DHCP地址。 二、udhcpc一直发送discover 在DHCP协议中,客户端首先需要发送discover消息,请求获取ip地址。 udhcpc工具在执行时,会一直发送discover消息,直至获取成功或失败。以下是udhcpc发送discover消息的代码片段。 while (!(udhcp_send_raw(discover_pkt, sizeof(discover_pkt), NULL, PEER_PORT))) { if (no_background) { bb_error_msg("sending discover"); } else { bb_info_msg("sending discover"); } sleep(config_timeouts[timeout++]); if (timeout >= 7) { bb_error_msg("no lease, failing"); /* Typically, client immediately sends DHCPDECLINE here, * and shuts down after that. We don't support it */ return EXIT_FAILURE; } } 三、udhcpc命令 udhcpc命令可用于在命令行中手动获取DHCP地址。以下是具体的命令使用方法: sudo udhcpc -i eth0四、udhcpc参数详解 udhcpc命令还可以使用其他参数来执行特定的功能:
五、dhcpc工具向DHCP服务器发送discover消息 udhcpc sending discover 当udhcpc工具向DHCP服务器发送discover消息时,会进行日志记录。以下是发送discover消息时的日志输出。 ...udhcpc: sent discoverudhcpc: sending discoverudhcpc: lease of xxx.xxx.xxx.xxx obtained, lease time xxx...六、udhcpc无法获取DHCP地址 udhcpc no lease failing 如果udhcpc无法获取DHCP地址,会输出“no lease, failing”的错误信息,并返回EXIT_FAILURE。 udhcpc: no lease, failing以上就是对udhcpc的详细阐述,并提供相应的命令和代码示例。 |
|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号 ) |Sitemap
GMT+8, 2024-9-30 23:14 , Processed in 0.091967 second(s), 32 queries .
Powered by Discuz! X3.2 Licensed
© 2001-2013 Comsenz Inc.