uci

OpenWrt的模型统一配置接口

配置文件
uci的配置文件中通常包含一个或多个配置节,所谓配置节是带有一个或多个选项的语句。所有的配置文件UCI配置文件均保留在/etc/config中。
/etc/config中的文件含义:dhcp (Dnsmasq软件包配置,包含DHCP和DNS设置)dropbear (SSH服务器选项) timeserver (rdate的时间服务列表) luci(基本的LuCI配置) wireless(无线设置和WIFI网络定义) uhttpd(Web服务器选项配置)upnpd(miniupnpd UPnP服务设置) qos(网络服务质量的配置文件定义)
如/etc/config/system ,是关于系统设置的配置,包含主机名称,网络时间同步等 在这里插入图片描述config system 语句定义了一个配置节的开始,配置类型为“system”但没有名称,没有名称的配置节点,称为匿名配置节,选项option hostname ‘XiaoQiao’ 和 option log_size ‘64’ 和option timezong ‘CST-8’ 三行定义了这个配置节的两个简单配置。config hostdns 'netdt’定义了另外一个配置节的开始。类型为hostdns,名称为netdt

UCI标识符和配置文件的名称只能包含字母a~z、0~9和_。例如字符(-)是不允许使用的,且需要正确的加上引号。

uci get wireless.wl0.ssid #查看wifi名称
uci get wireless.wl0.key #查看wifi密码

uci set network.lan.ipaddr=192.168.8.1  #修改局域网网关IP地址,也可以直接用vi修改network文件
uci commit network  #提交  所有uci set、uci add、uci rename、uci delete命令将配置写入一个临时位置,在运行uci commit时写入实际的存储位置
/etc/init.d/network restart  #使修改生效

使用如下命令也可以修改wifi密码:

uci set wireless.wl0.key=123456789
uci commit
修改完成之后需要重启路由器             直接使用  /sbin/reboot

init.d首先在该软件预期的位置生成这样的一个配置文件,它通过重新启动可执行程序再次读入配置。若只是直接启动可执行文件,没有通过init.d调用,将不会将一个UCI配置文件更新到特定程序相应的配置文件位置,在/etc/config/的修改将不会对现有进程有任何影响。

OpenWrt系统默认有3个网卡接口,可以通过network.@interface[0]来引用第一个。或者使用负索引,例如-1 表示倒数第一个

uci get network.@interface[0].ifname #获取第一个网卡的名称

有些运行中的状态值没有保存在/etc/config下,而是在/var/state下,此时使用参数 -P来查询当前值。

uci -P/var/state show network.wan

当为链表时,配置如下:

#增加到链表中一个配置项
uci add_list system.ntp.server='ntp.bjbook.net' #增加后记得commit
#删除链表中的一个配置项
uci del_list system.ntp.server='ntp.bjbook.net'  #删除后记得commit
#删除链表中所有的配置项
uci delete system.ntp.server
创建一个自定义配置

uci add命令只能创建匿名配置节,有名配置节使用uci set来完成
创建一个helloRoute配置

touch /etc/config/hello
uci set hello.globe=system #设置配置节的类型为system
#设置配置节的三个选项
uci set hello.globe.agent=bjbook
uci set hello.globe.url='www.bjbook.net/openwrt'
uci set hello.globe.delay=100
uci commit

UCI模块提供了一个shell脚本(/lib/config/uci.sh)并封装了UCI命令行工具的功能,函数名以uci开头,在使用uci_load(加载配置并设置到环境变量中)之前要先导入functions.sh,因为uci_load函数会调用到functions.sh中的config()、option()、list()等函数,将配置导入环境变量中。

. /lib/functions.sh    //装载函数

以uci_开头的函数和以config_开头的函数大多数功能完全相同,唯一区别在于uci_get等函数直接从文件中获取,而config_get函数从环境变量中读取。config_get函数使用config_load一次从配置文件中读取设置到环境变量中,以后均不再进行磁盘操作,性能优于uci_get,uci_get每次均从文件中读取。

sysctl

sysctl是用于修改运行中的内核参数的命令。

/sbin/sysctl -a   #显示所有的内核配置
/sbin/sysctl -n kernel.hostname   #查询kernel.hostname的值
/sbin/sysctl -w kernel.hostname="zhang"   #修改系统主机名为zhang
/sbin/sysctl -p /etc/sysctl.conf   #加载配置
cat /proc/sys/net/ipv4/ip_forward   #直接查询是否打开路由转发
echo "1" > /proc/sys/net/ipv4/ip_forward  #打开路由转发设置
系统配置

/etc/rc.local 系统每次启动时由/etc/rc.d/S95done调用,是一个shell脚本,若有任何想要在开机之后就立即执行的命令,就直接将其写在/etc/rc.local ,当启动系统时会自动被执行。
/etc/profile为系统的每个登录用户设置环境变量。
/etc/shells shell对于linux内核来说,相当于一个外壳,linux有多少个命令解析外壳程序,shells文件包含系统中所有外壳程序的列表。OpenWrt采用/bin/ash,此时shells文件中的内容就是/bin/ash,而Ubuntu中shells文件内容如下
在这里插入图片描述/etc/fstab 关于文件系统的静态信息,系统启动时读取并设置,文件fstab包含各种文件系统的描述信息,现在fstab只能通过程序读取,不能修改它,创建和维护这个文件的是系统管理员 。
/etc/services 这个文件是互联网网络服务类型列表。普通的ASCII编码文件,提供了友好的文本名称和互联网服务之间的映射,还包含了端口号和协议类型。
/etc/protocols 文件是协议定义描述文件,是一个普通的ASCII玛文本文件,用于u描述各种各样的因特网网络协议。如下,第2列数字表示协议的数字号码,将出现在IP报头,用十进制数字表示。第3列是协议的选项。
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐