-
El script uci-defaults de OpenWrt
OpenWrt se basa en UCI, la Interfaz Unificada de Configuración, para configurar sus servicios centrales. UCI defaults ofrece una manera de preconfigurar nuestras imágenes utilizando UCI. Para establecer algunos valores predeterminados del sistema la primera vez que el dispositivo se inicia, creamos scripts en el directorio /etc/uci-defaults. Todos los scripts en ese directorio se ejecutan automáticamente al arranque:
- Si finalizan con el código 0, se eliminan inmediatamente.
- Si finalizan con un código de salida distinto de cero no se eliminan y se volverán a ejecutar en el próximo arranque hasta que finalicen correctamente.
En un router en funcionamiento podemos ver los scripts de UCI defaults existentes en /rom/etc/uci-defaults, ya que /etc/uci-defaults suele estar vacío (después de que todos los scripts se hayan ejecutado con éxito y se hayan eliminado).
Los scripts de UCI defaults pueden ser creados por paquetes o pueden ser insertados manualmente en la construcción como archivos personalizados.
cat << "EOF" > /etc/uci-defaults/99-custom uci -q batch << EOI set network.lan.ipaddr='192.168.1.1' set wireless.@wifi-device[0].disabled='0' set wireless.@wifi-iface[0].ssid='OpenWrt' add dhcp host set dhcp.@host[-1].name='impresora' set dhcp.@host[-1].ip='192.168.1.50' set dhcp.@host[-1].mac='a1:b2:c3:d4:e5:f6' rename firewall.@zone[0]='lan' rename firewall.@zone[1]='wan' rename firewall.@forwarding[0]='lan_wan' EOI EOF
Este es un ejemplo sencillo para configurar la dirección IP de LAN, el SSID, activar Wi-Fi, configurar una asignación DHCP estática, renombrar la zona de firewall y las secciones de reenvío. Una vez que el script se haya ejecutado con éxito y haya finalizado correctamente (estado de salida 0), se eliminará de /etc/uci-defaults. Todavía podremos consultar el original en /rom/etc/uci-defaults, si es necesario.
Los scripts en /etc/uci-defaults se ejecutarán cada primer arranque (es decir, después de una instalación limpia o una actualización), posiblemente sobrescribiendo valores ya existentes. Si este comportamiento no interesa, podemos hacer una comprobación al principio del script, como por ejemplo esta:
[ "$(uci -q get system.@system[0].zonename)" = "America/New York" ] && exit 0
Esa línea hace que el script no se ejecute si la zona horaria es «America/New York».
Search
Archives
- noviembre 2024
- octubre 2024
- septiembre 2024
- junio 2024
- mayo 2024
- abril 2024
- marzo 2024
- octubre 2023
- agosto 2023
- junio 2023
- mayo 2023
- abril 2023
- marzo 2023
- febrero 2023
- enero 2023
- diciembre 2022
- noviembre 2022
- octubre 2022
- septiembre 2022
- agosto 2022
- julio 2022
- junio 2022
- mayo 2022
- abril 2022
- febrero 2022
- enero 2022
- diciembre 2021
- noviembre 2021
- octubre 2021
- septiembre 2021
- julio 2021
- junio 2021
- mayo 2021
- abril 2021
- marzo 2021
- febrero 2021
- enero 2021
- diciembre 2020
- noviembre 2020
- octubre 2020
- septiembre 2020
- junio 2020
- mayo 2020
- abril 2020
- marzo 2020
- noviembre 2019
- septiembre 2019
- agosto 2019
- julio 2019
- junio 2019
- mayo 2019
- enero 2019
- noviembre 2018
- septiembre 2018
- agosto 2018
- junio 2018
- mayo 2018
- marzo 2018
- febrero 2018
- diciembre 2017
- octubre 2017
- septiembre 2017
- agosto 2017
- julio 2017
- junio 2017
- mayo 2017
- abril 2017
- marzo 2017
- febrero 2017
- diciembre 2016
- noviembre 2016
- octubre 2016
- septiembre 2016
- agosto 2016
- julio 2016
- mayo 2016
- abril 2016
- marzo 2016
- febrero 2016
- noviembre 2015
- octubre 2015
- agosto 2015
- julio 2015
- junio 2015
- mayo 2015
- abril 2015
- marzo 2015
- febrero 2015
- enero 2015
- diciembre 2014
- noviembre 2014
- octubre 2014
- septiembre 2014
- agosto 2014
- julio 2014
- junio 2014
- mayo 2014
- abril 2014
- marzo 2014
- febrero 2014
- enero 2014
- diciembre 2013
- noviembre 2013
- septiembre 2013
- julio 2013
- mayo 2013
- marzo 2013
- febrero 2013
- enero 2013
- diciembre 2012
- noviembre 2012
- agosto 2012
- julio 2012
- junio 2012
- mayo 2012
- abril 2012
- marzo 2012
- enero 2012
- noviembre 2011
- julio 2011
- junio 2011
- mayo 2011
- abril 2011
- marzo 2011
- enero 2011
- diciembre 2010
- septiembre 2010
- agosto 2010
- julio 2010
- febrero 2010
- enero 2010