linux下udhcpc的使用
一、创建配置文件
从busybox的examples/udhcp/下获取simple.script文件,复制到嵌入式设备/usr/share/udhcpc/下,并重命名为default.script。
simple.script内容:
#!/bin/sh # udhcpc script edited by Tim Riker <Tim@Rikers.org> RESOLV_CONF="/etc/resolv.conf" [ -n "$1" ] || { echo "Error: should be called from udhcpc"; exit 1; } NETMASK="" if command -v ip >/dev/null; then [ -n "$subnet" ] && NETMASK="/$subnet" else [ -n "$subnet" ] && NETMASK="netmask $subnet" fi BROADCAST="broadcast +" [ -n "$broadcast" ] && BROADCAST="broadcast $broadcast" case "$1" in deconfig) echo "Setting IP address 0.0.0.0 on $interface" if command -v ip >/dev/null; then ip addr flush dev $interface else ifconfig $interface 0.0.0.0 fi ;; renew|bound) echo "Setting IP address $ip on $interface" if command -v ip >/dev/null; then ip addr add $ip$NETMASK $BROADCAST dev $interface else ifconfig $interface $ip $NETMASK $BROADCAST fi if [ -n "$router" ] ; then echo "Deleting routers" while route del default gw 0.0.0.0 dev $interface ; do : done metric=0 for i in $router ; do echo "Adding router $i" if [ "$subnet" = "255.255.255.255" ]; then # special case for /32 subnets: # /32 instructs kernel to always use routing for all outgoing packets # (they can never be sent to local subnet - there is no local subnet for /32). # Used in datacenters, avoids the need for private ip-addresses between two hops. ip route add $i dev $interface fi route add default gw $i dev $interface metric $((metric++)) done fi echo "Recreating $RESOLV_CONF" # If the file is a symlink somewhere (like /etc/resolv.conf # pointing to /run/resolv.conf), make sure things work. if test -L "$RESOLV_CONF"; then # If it's a dangling symlink, try to create the target. test -e "$RESOLV_CONF" || touch "$RESOLV_CONF" fi realconf=$(readlink -f "$RESOLV_CONF" 2>/dev/null || echo "$RESOLV_CONF") tmpfile="$realconf-$$" > "$tmpfile" [ -n "$domain" ] && echo "search $domain" >> "$tmpfile" for i in $dns ; do echo " Adding DNS server $i" echo "nameserver $i" >> "$tmpfile" done mv "$tmpfile" "$realconf" ;; esac exit 0
二、执行命令,指定网卡为bridge0
udhcpc -i bridge0
三、执行结果
/ # udhcpc -i bridge0 udhcpc (v1.23.1) started Setting IP address 0.0.0.0 on bridge0 Sending discover... Sending select for 192.168.137.96... Lease of 192.168.137.96 obtained, lease time 604800 Setting IP address 192.168.137.96 on bridge0 Deleting routers route: SIOCDELRT: No such process Adding router 192.168.137.1 Recreating /etc/resolv.conf Adding DNS server 192.168.137.1