Genie acs的搭建及使用

您所在的位置:网站首页 acs数据库使用方法 Genie acs的搭建及使用

Genie acs的搭建及使用

2023-10-19 01:16| 来源: 网络整理| 查看: 265

文章目录 一.介绍二.前提三.安装NodeJS四.安装MongoDBA.在Ubuntu安装B.在Centos或者Red Hat安装 五.安装Genie ACS六.Genie ACS的使用七.Genie ACS脚本

一.介绍

GenieACS是一个开源的TR-069远程管理解决方案,其整合了基于HTTP的API,可编辑的脚本可以用来处理自动化操作,具有许多高级设备配置功能。安装GENIE ACS需要安装NodeJS和Mogodb,本文将介绍在Ubuntu和Ctentos安装Mogodb的方法,并提供一些常见的问题解决方法。

二.前提

本次安装在Ubuntu 20.04.5 LTS(focal)进行,推荐在focal安装,查看系统安装版本及内核:lsb_release -dc。系统需要能访问到github等网站进行下载。在安装前输入 sudo -s进入root 模式。

三.安装NodeJS

1.根据系统版本下载nodeJ版本,选择Linux Binaries(x64) 64-bit下载,在linux系统转到下载链接下载。 下载链接:https://nodejs.org/en/download/ 请添加图片描述

2.在linux系统下载好后使用tar -xvf命令解压 请添加图片描述

3.将下载好的文件移动到/usr/local/目录下

mv node-v10.16.0.0-linux-64 nodejs (改名) cd /usr/local/ (切换到local目录下) mv node存的目录 . (.表示移动到当前目录)

请添加图片描述 使用ls命令查看nodejs已经移动到/usr/local/目录下

4.使npm和node命令全局生效 方法一:添加环境变量

vi /etc/profile (编辑profile文件) export PATH=$PATH:/usr/local/nodejs/bin (在该文件末尾添加) source /etc/profile (执行命令让配置文件生效)

打开profile后,输入i进行文件编辑,编辑完成后按ESC,并输入:wq即可保存并退出 请添加图片描述

如果使用vi时发现上下左右按键出现字母等输入错误的情况,按照如下方式来解决 ubuntu默认安装装的是vim tiny版本,而需要的是vim full版本。执行下面的语句安装vim full版本

$sudo apt-get remove vim-common $sudo apt-get install vim

方法二:创建链接(推荐此方法)

ln -s /usr/local/nodejs/bin/npm /usr/local/bin/ ln -s /usr/local/nodejs/bin/node /usr/local/bin/

如果选择方法一,当找不到node时,重新执行source /etc/profile命令让配置生效

5.查看安装成功后的版本

node -v npm -v

请添加图片描述 请添加图片描述 如果第四步使用方法一,此时却查看不到安装版本,请尝试输入source /etc/profile

四.安装MongoDB A.在Ubuntu安装

1.导入公钥 在终端输入以下命令,从https://www.mongodb.org/static/pgp/server-6.0.asc 导入MongoDB公共GPG密钥,当返回值ok时表示成功。

wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

请添加图片描述 如果收到未安装gnupg的错误,进行一下操作

sudo apt-get install gnupg wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

2.为MongoDB创建列表文件

使用lsb_release -dc确定系统软件版本,每个版本的创建命令不同。 为Ubuntu 20.04 (Focal)创建 /etc/apt/sources.list.d/mongodb-org-6.0.list 文件

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

请添加图片描述 如果系统软件版本为其他,则把上述命令中的 focal改为使用lsb_release -dc命令查看到的内核名。

3.重新加载本地包数据库

sudo apt-get update

请添加图片描述

在使用apt-get update 出现如下错误 请添加图片描述 是因为本次没有40976EAF437D05B5的公有key 使用如下命令解决

apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5 3B4FE6ACC0B21F32

如果出现连接超时的错误,可以去keyserver.ubuntu.com的首页搜索对应的public key 找到对应的key,点击进去,点击后如下,将其复制到文件中 请添加图片描述 使用命令apt-key add ,添加这个key,添加成功提示下面的信息请添加图片描述 重新执行apt-get update就会成功。

4.安装MongoDB 使用以下 命令安装最新版本

sudo apt-get install -y mongodb-org

请添加图片描述 5.运行MongoDB 要运行和管理mongod进程,最新版本的Linux倾向于使用systemd(使用systemctl命令),而较旧版本的Linux则倾向于使用SystemV init(使用service命令)。 使用以下命令确定使用的是哪个init系统

ps --no-headers -o comm 1

当查看得知为systemd,使用systemd (systemctl) 如下: 启动MongaDB

sudo systemctl start mongod

如果报错:Failed to start mongod.service: Unit mongod.service not found. 执行以下命令

sudo systemctl daemon-reload

验证MongoDB是否已成功启动

sudo systemctl status mongod

确保MongoDB在系统重新启动后启动

sudo systemctl enable mongod

停止运行

sudo systemctl stop mongod

重启

sudo systemctl restart mongod

开启mongosh会话,默认端口27017

mongosh

请添加图片描述

如果为init,则使用System V Init (service)如下所示:

sudo service mongod start sudo service mongod status sudo service mongod stop sudo service mongod restart mongosh

卸载

sudo service mongod stop sudo apt-get purge mongodb-org* sudo rm -r /var/log/mongodb sudo rm -r /var/lib/mongodb

当想查看目前安装的版本时,使用如下命令

mongod -version

请添加图片描述

6.相关文件路径 通过包管理器安装,则数据目录在/var/lib/mongodb,日志目录在/var/log/mogodb,配置文件在/etc/mongod.conf

B.在Centos或者Red Hat安装

1.配置管理系统

vim /etc/yum.repos.d/mongodb-org-6.0.repo (创建文件) [mongodb-org-6.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc (在该文件输入该段,就可以通过yum安装mongodb)

2.安装mongodb包

sudo yum install -y mongodb-org sudo yum install -y mongodb-org-6.0.1 mongodb-org-database-6.0.1 mongodb-org-server-6.0.1 mongodb-mongosh-6.0.1 mongodb-org-mongos-6.0.1 mongodb-org-tools-6.0.1 (如果要指定安装版本使用该命令) vim /etc/yum.conf(防止意外升级需编写该文件) exclude=mongodb-org,mongodb-org-database,mongodb-org-server,mongodb-mongosh,mongodb-org-mongos,mongodb-org-tools(把该命令添加到末尾)

chuxian baocuo kill -9 3364 xianshi complete

3.安装 SELinux Policy

sudo yum install git make checkpolicy policycoreutils selinux-policy-devel(安装) git clone https://github.com/mongodb/mongodb-selinux(从git下载) cd mongodb-selinux(定位) make(创建policy) sudo make install(应用policy)

4.启动

(1)查看系统版本 有systemd版本,和init版本,init版本使用不了systemctl命令

ps --no-headers -o comm 1

(2)打开 systemd启动mongodb

sudo systemctl start mongod

init启动mongodb

sudo service mongod start

(3)状态 查看mongodb状态

sudo systemctl status mongod

在系统重启后还可以使用mongodb

sudo systemctl enable mongod

(4)开始使用

mongosh

5.卸载

sudo service mongod stop(停止服务) sudo yum erase $(rpm -qa | grep mongodb-org) (卸载) sudo rm -r /var/log/mongodb (删除log日志) sudo rm -r /var/lib/mongo (删除lib日志)

6.查看版本 mongo -version

五.安装Genie ACS

1.从NPM安装

sudo npm install -g [email protected]

请添加图片描述

如果报错npm命令未发现,把sudo去掉

2.创建一个系统用户来运行 genieacs 守护进程

sudo useradd --system --no-create-home --user-group genieacs

请添加图片描述

3.创建目录以保存扩展和环境文件

mkdir /opt/genieacs mkdir /opt/genieacs/ext chown genieacs:genieacs /opt/genieacs/ext

请添加图片描述

4.创建文件保存保存配置选项

vim /opt/genieacs/genieacs.env 将以下粘贴到genieacs.env GENIEACS_CWMP_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-cwmp-access.log GENIEACS_NBI_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-nbi-access.log GENIEACS_FS_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-fs-access.log GENIEACS_UI_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-ui-access.log GENIEACS_DEBUG_FILE=/var/log/genieacs/genieacs-debug.yaml NODE_OPTIONS=--enable-source-maps GENIEACS_EXT_DIR=/opt/genieacs/ext GENIEACS_UI_JWT_SECRET=secret

请添加图片描述

5.设置文件权限

sudo chown genieacs:genieacs /opt/genieacs/genieacs.env sudo chmod 600 /opt/genieacs/genieacs.env

请添加图片描述

6.创建日志目录

mkdir /var/log/genieacs chown genieacs:genieacs /var/log/genieacs

日志都存在/var/log/genieacs,如果要查看日志文件使用 journalctl命令

请添加图片描述

7.使用systemctl edit --force --full命令genieacs-cwmp 服务 该服务用于与CPE通信,默认在7547上监听,要在CPE上配置ACS URL。

sudo systemctl edit --force --full genieacs-cwmp [Unit] Description=GenieACS CWMP After=network.target [Service] User=genieacs EnvironmentFile=/opt/genieacs/genieacs.env ExecStart=/usr/bin/genieacs-cwmp [Install] WantedBy=default.target

当 systemctl edit --force --full 无法执行,需要在 /etc/systemd/system/手动创建genieacs-nbi.service、genieacs-ui.service、genieacs-fs.service、genieacs-cwmp.service,并修改权限,使用touch命令创建文件, 使用chmod命令修改权限。

注意:要把上面ExecStart的路径改为相应文档的路径,可以使用命令which genieacs-cwmp来查看具体路径,创建其他三个服务时也是如此。当使用该命令却没有显示路径时,有可能是NPM/NODE出现了问题,执行以下命令以使其生效

vi /etc/profile export PATH=$PATH:/usr/local/nodejs/bin (在该文件末尾添加) source /etc/profile

8.使用systemctl edit --force --full命令创建 genieacs-ui 服务 北向接口模块默认在7557上公开RESET API,仅当具有使用此API与GenieACS集成的外部系统时,才需要此接口。

sudo systemctl edit --force --full genieacs-nbi [Unit] Description=GenieACS NBI After=network.target [Service] User=genieacs EnvironmentFile=/opt/genieacs/genieacs.env ExecStart=/usr/bin/genieacs-nbi [Install] WantedBy=default.target

9.使用systemctl edit --force --full命令创建 genieacs-fs服务 此为文件服务器,CPE从此处下载固件等。

sudo systemctl edit --force --full genieacs-fs [Unit] Description=GenieACS FS After=network.target [Service] User=genieacs EnvironmentFile=/opt/genieacs/genieacs.env ExecStart=/usr/bin/genieacs-fs [Install] WantedBy=default.target

10.使用systemctl edit --force --full命令创建 genieacs-ui服务 此为基于web UI的用户界面,在3000上监听。

sudo systemctl edit --force --full genieacs-ui [Unit] Description=GenieACS UI After=network.target [Service] User=genieacs EnvironmentFile=/opt/genieacs/genieacs.env ExecStart=/usr/bin/genieacs-ui [Install] WantedBy=default.target

11.使用 logrotate 配置日志文件轮换

vim /etc/logrotate.d/genieacs /var/log/genieacs/*.log /var/log/genieacs/*.yaml { daily rotate 30 compress delaycompress dateext }

请添加图片描述

12.启用和启动服务

sudo systemctl enable genieacs-cwmp sudo systemctl start genieacs-cwmp sudo systemctl status genieacs-cwmp sudo systemctl enable genieacs-nbi sudo systemctl start genieacs-nbi sudo systemctl status genieacs-nbi sudo systemctl enable genieacs-fs sudo systemctl start genieacs-fs sudo systemctl status genieacs-fs sudo systemctl enable genieacs-ui sudo systemctl start genieacs-ui sudo systemctl status genieacs-ui

如果此时查看状态发现报错 active: fail code =exited status=203/EXEC 请添加图片描述 重新创建软链接解决

ln -s /usr/local/nodejs/bin/npm /usr/local/bin/ ln -s /usr/local/nodejs/bin/node /usr/local/bin/

请添加图片描述

此时就可以看到服务成功启动 请添加图片描述 当查看到四个服务均处于actice状态,mongodb也处于成功安装和运行状态,即可开始Genie ACS的使用。

六.Genie ACS的使用

1.进入genie acs 使用ifconfig命令查看ip地址,如果提示该命令不可用,输入 apt install net-tools安装网络工具

在这里插入图片描述

查看得知IP地址为192.168.0.7,通过【IP:3000】访问服务器管理界面,在浏览器使用192.168.0.7:3000登入Genie ACS。CPE连接的URL为【IP:7547】,需要在服务器关闭防火墙,因为本次Genie ACS安装在虚拟机上,所以设置虚拟上网卡为桥接模式。默认登入用户名和密码均为admin。登入Genie ACS后如下所示:

请添加图片描述

2.Genie ACS的配置 进入Genie ACS后需要进行如下认证设置才能对CPE进行管理。进入[Admin]->[Config]-[New config]添加新的配置项。 A.ACS认证设置,设置ACS认证的用户名和密码,本次均设置为admin。

Key:cwmp.auth Value:AUTH("admin","admin")

在这里插入图片描述 B.CPE认证设置,设置CPE认证的用户名和密码,本次均设置为admin。

Key:cwmp.connectionRequestAuth Value:AUTH("admin","admin")

在这里插入图片描述

C.Online设置,调整超时前等待的时间,系统默认为4000毫秒,本次延长为10000毫秒。

Key:cwmp.deviceOnlineThreshold Value:10000

在这里插入图片描述

D.会话超时设置,调整会话超时时间,本次设置为10000,注意该值有双引号。

Key:cwmp.seesionTimeout Value:"10000"

在这里插入图片描述

3.CPE的配置 将CPE的CWMP功能打开,因为Genie ACS的CWMP在7547端口上监听,ACS URL设置为[IP:7547]。本次URL设置为http://192.168.0.7:7547,ACS用户名和密码输入如上ACS认证设置,本次均为admin。CPE认证用户名和密码输入如上CPE认证设置,本次均为admin。注意选择Interface used by TR-069 client为Any WAN或LAN。点击保存后即可。 在这里插入图片描述

4.Overview界面 在这里插入图片描述

① 登陆后可以点击Log out退出登陆,当前以admin登陆 ② 显示在线状态,目前共有一台设备在线。

5.Devices界面 在这里插入图片描述 ① 过滤器,当管理众多设备时,可以以Serial number,Product class,Tag作为过滤条件。 ② 显示设备的详细信息,包括该设备的产品序列号,产品类别,软件版本,IP地址,SSID名称,最近通信时间及目前状态,标签。[Show]可以显示更多信息对设备进行管理。 ③ 下载设备信息,包括产品序列号,产品类别,软件版本,IP地址,SSID名称,最近通信时间,标签。 ④ 选定特定的设备后,对设备进行PRC操作,包括重启,恢复出产设置,上传文件(例如固件文件),删除该设备,添加标签,删除标签。 [Show]界面 在这里插入图片描述

① 显示该设备的更多信息,名称由OUI,Product class,Serial number组成,在此处可以修改WLAN SSID和WLAN passphrass,可以点击[Summon]唤醒设备。 ② 显示连接该设备LAN端的Client,显示Client的名称,IP地址及MAC地址。 ③ 查看当前设备的错误返回情况,可以在此查看发生错误时的详细信息。 在这里插入图片描述

④ 任务栏,显示当前的任务队列数,等待中的任务数,错误的任务数,过期的任务数,点击[Commit]便会开始发送数据,将Queued中的所有任务一次发送出去,将其整合成一个报文在一个session中进行发送,点击[Clear]清除队列任务。只有当有要执行的任务时才会出现任务栏。 ⑤ 显示所有的参数,可通过搜索栏对节点进行过滤搜索,点击[Download]可以将参数信息以CSV文件下载保存。点击[edit]或[refresh]图标可以将其提交到任务队列中。当为param时点击刷新图标,会调用getParamValue刷新当前值;当为object时点击刷新图标,会先调用getParamName获取PortMapping下所有的[i]节点名称,然后再调用getParamValue获取其子节点值。 在这里插入图片描述 ⑥ 当设备首次连接上ACS,刷新根节点来获取设备所支持的Parameters。

6.Faults界面 在这里插入图片描述

显示执行任务后错误的任务列表,可以在此查看错误信息,选中一条信息后可以将其删除。

7.Admin界面 在这里插入图片描述 ① 预设,可以预设条目执行,此条目与预置联动 ② 预置,预置是在服务器上按设备执行的一段JavaScript代码。它能够实现复杂的配置场景和其他操作,例如自动固件升级推出。与简单的预设配置条目相比,使用预置时添加的性能开销相对较小。任何可以通过预设配置完成的事情都可以使用预置脚本完成,建议对所有配置使用预置脚本。将预置脚本分配给预设时,您可以将参数传递给脚本。可以通过全局args变量从脚本访问参数。 ③ 虚拟参数,虚拟参数是用户定义的参数,其值使用自定义Javascript代码生成。虚拟参数的行为与常规参数一样,并出现在VirtualParameters.path下的数据模型中。虚拟参数名称不能包含句号(.)。 ④ 文件,可以将文件进行上传,例如固件文件 ⑤ 配置,修改配置文件,例如认证信息等。 ⑥ 权限,此处可以修改用户的修改读写权限。 ⑦ 用户,查看所有用户。

七.Genie ACS脚本

使用预设(Presets)和预置(Provisions)添加脚本更方便ACS下发相关指令。Provison是一段JavaScript代码,预置(Provisions)通过预设(Presets)映射到设备上,因此将预置(Provisions)分配给预设(Presets)时,就可以通过脚本进行参数的传递,访问参数时也可以通过全局变量args进行访问。注意:尽管在脚本中所有的数据模型都是幂等的,但是脚本作为一个整体可能不是幂等的(即发一次请求和发送多次请求最终的执行结果可能不一致),所以在特定的情况下,很有必要反复运行该脚本直到该脚本可以平稳运行。

1.内置函数 ① declare(path, timestamps, values) 此函数用于声明要设置的参数值,及刷新参数值的时间限制,如果设定的timestamps低于设备上次刷新的timestamps,那么在执行该函数时,返回的值为最后刷新的值,如果设定的timestamps高于或者等于设备上次刷新的timestamps,那么返回的值将会先从设备中获取,再返回给调用者。 ② clear(path, timestamp) 当上次刷新的timestamp小于给定的timestamp时,给定path的数据库副本就会失效。此函数最常用是在设备恢复出厂设置后使整个数据模型的数据库副本失效。 ③ commit() 此函数用于提交处于队列中的declare函数,通常该函数会在脚本末尾隐式调用,或者在访问declare函数返回对象的属性时调用。仅当想要控制配置参数的顺序时才需要显式调用它。 ④ ext(file, function, arg1, arg2, …) 执行扩展脚本并返回结果。 第一个参数是脚本文件名,而第二个参数是该脚本中的函数名。 任何剩余的参数都将传递给该函数。因为Provision 和 Virtual Parameters 在沙盒环境中执行,无法与外部源交互或执行任何需要操作系统、文件系统或网络访问的操作,因此ext来弥合这一差距,该部分为Node.js模块。 ⑤ log(message) 输出geniacs cwmp访问日志,当需要调试时调用该函数。

2.特殊的Genie ACS参数 除了TR-069在数据模型中公开的参数外,GenieACS还有自己的一组特殊参数。 ① DeviceID 这个参数包含以下只读参数,用于获取设备的信息:DeviceID.ID,DeviceID.SerialNumber,DeviceID.ProductClass,DeviceID.OUI,DeviceID.Manufacturer ② Tags 该参数用于显示设备的标记,当该值设置为false,则删除该标记,当该值为true,则创建标记。 ③ Reboot 当设定的timestamp值大于或者等于当前的timestamp时,便会触发使设备重启。 ④ FactoryReset 当设定的timestamp值大于或者等于当前的timestamp时,便会触发使设备恢复出厂设置。 ⑤ Downloads 该参数包含FileType、FileName、TargetFileName和Download,可用于触发新的下载,常用于固件下载,导入配置文件等。

3.添加脚本操作示例 ① 在[Admin]新建一条Provisions,输入[name] and [script],脚本如下:

const daily = Date.now(86400000); declare("InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.X_TP_PreSharedKey", {value: daily}, {value: "la mia password"}); declare("InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.SSID", {value: daily}, {value: "nuovo wifi 2"});

② 在[Admin]新建一条Preset,输入[Name], [Channel] and [Weight],在[Provisons]选择刚刚创建的Provisions,保存后即可。如果脚本没有立即生效,可在[Devices]界面点击[Summon]。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3