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

 

posted @ 2020-08-08 10:03  wmate  阅读(3394)  评论(0编辑  收藏  举报