UDHCPC 获取IP并设置到系统

调用udhcpc可以正常获取到ip地址,但使用ifconfig eth0 命令查看不到ip地址和网关,原因是udcpc获取到ip地址,但没有设置到系统内。其实udhcp有这个功能,我们只需要一个脚本放到对应的位置,这样获取到ip后自动执行脚本即可完成设置。
脚本可以从busybox源码目录中获取,比如\busybox-1.1.2\examples\udhcp\simple.script
其内容如下:

#!/bin/sh
# udhcpc script edited by Tim Riker

RESOLV_CONF=”/etc/resolv.conf”

[ -n “$1” ] || { echo “Error: should be called from udhcpc”; exit 1; }

NETMASK=””
[ -n “$subnet” ] && NETMASK=”netmask $subnet”
BROADCAST=”broadcast +”
[ -n “$broadcast” ] && BROADCAST=”broadcast $broadcast”

case “$1” in
deconfig)
echo “Setting IP address 0.0.0.0 on $interface”
ifconfig $interface 0.0.0.0
;;

renew|bound)
echo “Setting IP address $ip on $interface”
ifconfig $interface $ip $NETMASK $BROADCAST

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”
route add default gw $i dev $interface metric $metric
: $(( metric += 1 ))
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.
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

将文件放到目标板/usr/share/udhcpc/目录下,并命名为default.script即可。

mkdir /usr/share/udhcpc/
touch /usr/share/udhcpc/default.script
chmod +x /usr/share/udhcpc/default.script
vi /usr/share/udhcpc/default.script