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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM