7-Openwrt uci system

作者: Creator_Ly | 来源:发表于2019-01-07 16:33 被阅读10次

    openwrt的很多配置文件都是通过uci接口来进行查看修改的,虽然我们可以通过直接打开config/下面的配置文件进行修改,但是有个统一的接口为何不用呢,又方便又不会错。

    https://wiki.openwrt.org/doc/uci

    config_load system
    通过. /lib/functions.sh进行包含内容

    config_load() {
        [ -n "$IPKG_INSTROOT" ] && return 0
        uci_load "$@"
    }
    

    调用uci_load函数,该函数位于lib/config/uci.sh中

    uci_load() {
        local PACKAGE="$1"
        local DATA
        local RET
        local VAR
    
        _C=0
        if [ -z "$CONFIG_APPEND" ]; then
            for VAR in $CONFIG_LIST_STATE; do
                export ${NO_EXPORT:+-n} CONFIG_${VAR}=
                export ${NO_EXPORT:+-n} CONFIG_${VAR}_LENGTH=
            done
            export ${NO_EXPORT:+-n} CONFIG_LIST_STATE=
            export ${NO_EXPORT:+-n} CONFIG_SECTIONS=
            export ${NO_EXPORT:+-n} CONFIG_NUM_SECTIONS=0
            export ${NO_EXPORT:+-n} CONFIG_SECTION=
        fi
    
        DATA="$(/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} ${LOAD_STATE:+-P /var/state} -S -n export "$PACKAGE" 2>/dev/null)"
        RET="$?"
        [ "$RET" != 0 -o -z "$DATA" ] || eval "$DATA"
        unset DATA
    
        ${CONFIG_SECTION:+config_cb}
        return "$RET"
    }
    

    uci.sh里面都是uci的处理函数,如:
    uci_set_default(),uci_set(),uci_get()等

    最底层调用的都是sbin/uci接口

    uci set

    uci set network.ppp2=interface
    uci set network.ppp2.ifname=ppp2
    uci set network.ppp2.proto=3g
    uci set network.ppp2.username=$user
    uci set network.ppp2.password=$password
    uci set network.ppp2.apn=$apn
    uci set network.ppp2.auto=1
    uci set network.ppp2.device=/dev/ttyUSB3
    uci commit
    
    ifup ppp2
    
    uci set wireless.@wifi-device[0].disabled=0
    uci commit wireless 
    wifi down && wifi up
    

    相关文章

      网友评论

        本文标题:7-Openwrt uci system

        本文链接:https://www.haomeiwen.com/subject/nnnurqtx.html