PROG="/usr/sbin/easycwmpd" UCI_SET="/sbin/uci -q ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} set" UCI_GET="/sbin/uci -q ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} get" UCI_COMMIT="/sbin/uci -q ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} commit" init_device_info() { local val oval local change=0 val=`cat "/etc/device_info" | grep "DEVICE_MANUFACTURER" | cut -f 2 -d '=' | sed -e "s/['\"]//g" -e "s'[]:@/?#[!$&()*+,;=]'_'g"` oval=`$UCI_GET easycwmp.@device[0].manufacturer` [ -n "$val" -a "$val" != "$oval" ] && { $UCI_SET easycwmp.@device[0].manufacturer="$val"; change=1; } val=`cat "/etc/device_info" | grep "DEVICE_PRODUCT" | cut -f 2 -d '=' | sed -e "s/['\"]//g" -e "s'[]:@/?#[!$&()*+,;=]'_'g"` oval=`$UCI_GET easycwmp.@device[0].product_class` [ -n "$val" -a "$val" != "$oval" ] && { $UCI_SET easycwmp.@device[0].product_class="$val"; change=1; } val=`cat "/etc/device_info" | grep "DEVICE_REVISION" | cut -f 2 -d '=' | sed -e "s/['\"]//g" -e "s'[]:@/?#[!$&()*+,;=]'_'g"` oval=`$UCI_GET easycwmp.@device[0].hardware_version` [ -n "$val" -a "$val" != "$oval" ] && { $UCI_SET easycwmp.@device[0].hardware_version="$val"; change=1; } val=`cat "/etc/openwrt_version"` oval=`$UCI_GET easycwmp.@device[0].software_version` [ -n "$val" -a "$val" != "$oval" ] && { $UCI_SET easycwmp.@device[0].software_version="$val"; change=1; } #The same thing here for OUI and SerialNumber [ "$change" = "1" ] && $UCI_COMMIT easycwmp start_service() { #执行/etc/init.d/easycwmpd start,会进行到这里 #读取开关 local enable=`uci -q get easycwmp.@local[0].enable` if [ "$enable" == "1" ]; then #1. 获取平台的厂商 ,OID,软硬件版本号等,保存在uci中 /etc/config/easycwmp init_device_info #2.将/usr/sbin/easycwmpd进程加入到procd中监控起来 #2.1增加一个服务实例 procd_open_instance #2.2 添加进程处理 procd_set_param command "$PROG" -f if [ "$1" = "--boot" ];then procd_append_param command --boot procd_append_param command --getrpcmethod #2.3 设置异常 机制 procd_set_param respawn "3" "7" "0" #2.4 完成进程实例的增加 procd_close_instance boot() { start --boot service_triggers() #配置文件或网络接口改变之后触发服务重新读取配置 procd_add_reload_trigger easycwmp

启动脚本主要内容在函数start_service中,

  1. 1.在openwrt系统中,easycwmpd进程不是直接启动,而是使用procd监控进程来启动,做法很nice;
  2. 从系统文件中读取系统的基本信息,存入uci接口中,方便easycwmpd的读取信息操作

procd相关的介绍在详细请看

OpenWrt开发:25—软件模块之procd

uci set easycwmp .@local[0].ubus_socket=/tmp/run/ubus/ubus.sock /etc/ init .d/ easycwmpd restart ubus list |grep tr069 我们在ubuntu下要把一个程序加入开机 启动 ,一般可以通过修改rc.local来完成,但ubuntu下有两个rc.local文件。分别是/etc/rc.local和/etc/ init .d/rc.local。可以看一下两个文件的内容找到他俩的关系: /etc/ init .d/rc.local #! /bin/sh ### BEGIN INIT INFO # Provides: rc.local # Required - Start: $all # Required - Stop: # Default - Start: 2 3 4 5 # Default - Stop: # Short - Descrip EasyCwmp 设计包括两个部分: ① EasyCwmp Core:它包括TR069 CWMP引擎,并负责与ACS服务器的通信。使用C语言开发。 ② EasyCwmp DataModel:它包含TR - 06的DATAModel,并且符合某些DataModel标准,例如TR - 098,TR - 181,TR - 104等。使用shell开发,只支持部分协议模型,在开发和维护过程效率比较低。 二、 EasyCwmp 源码组成 三、 EasyCwmp 文件依赖 四、 EasyCwmp 执行 流程 详细代码参考easyc config local option enable '0' #开关 - 是否 启动 easycwmpd 进程 option interface eth0 #TR069协议报文接收,发送的网卡 - 一般是WAN口 option port 7547 #本机监听acs Get操作的接口 option ubus_s
这几天的工作是将Openwrt中的freeCWMP替换为 easyCWMP .由于 easyCWMP 默认是不存在于menuconfig中的,因此只能通过添加pacakge的方式来进行. 好在 easyCWMP 对openWRT的支持很友好,可以直接在package下解压,就可以在menuconfig中识别到了. BUT!!! 坑也不少. 原以为可以直接在package/解压目录下修改源码,然后编译,即...
EasyCwmp 安装 源代码下载地址为:http:// easycwmp .org/download/ easycwmp - 1.8.6.tar.gz 一般参考官网发布版本中README文件就可以成功安装,但是部分同学可能会遇到各种问题,本文按照官方提供的安装方法一步一步安装验证,其中遇到一些依赖库安装问题,已整理到本文安装步骤中。 1. OpenWRT Linux 上安装 EasyCwmp EasyCwmp 部分 EasyCwmp 主要是在OpenWRT Linux平台上开发和测试的。 下载 easycwm
什么是CWMP(TR069) CWMP是由数字用户线路DSL——Digital Subscriber’s Line论坛(之后更名为broadband - forum)发起开发的技术规范之一,编号为TR - 069,所以又被称为TR - 069协议 CWMP协议基础概念 CWMP的全称为:CPE广域网管理协议(CPE WAN Management Protocol),这个协议主要用于网管中心远程管理配置数量较大...
如果在你的 Linux 系统中执行 `/etc/ init .d/cron restart` 命令时出现 `/etc/ init .d/cron: No such file or directory` 的错误提示,可能是因为你的系统使用的是 Systemd 而不是 SysV init 。 在 Systemd 中,服务的 启动 和管理不再通过 `/etc/ init .d/` 目录下的脚本文件实现,而是通过使用 `systemctl` 命令。 因此,你可以尝试使用以下命令来重启 crontab 服务: sudo systemctl restart cron.service 如果你希望在系统 启动 时自动 启动 crontab 服务,可以使用以下命令: sudo systemctl enable cron.service 这样就可以在系统 启动 时自动 启动 crontab 服务了。如果还有问题,可以在评论区留言。