Genie acs的搭建及使用 |
您所在的位置:网站首页 › acs数据库使用方法 › Genie acs的搭建及使用 |
文章目录
一.介绍二.前提三.安装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 模式。 三.安装NodeJS1.根据系统版本下载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存的目录 . (.表示移动到当前目录)
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
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 -
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
3.重新加载本地包数据库 sudo apt-get update在使用apt-get update 出现如下错误 如果出现连接超时的错误,可以去keyserver.ubuntu.com的首页搜索对应的public key 找到对应的key,点击进去,点击后如下,将其复制到文件中 4.安装MongoDB 使用以下 命令安装最新版本 sudo apt-get install -y mongodb-org
当查看得知为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 -version6.相关文件路径 通过包管理器安装,则数据目录在/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 mongodinit启动mongodb sudo service mongod start(3)状态 查看mongodb状态 sudo systemctl status mongod在系统重启后还可以使用mongodb sudo systemctl enable mongod(4)开始使用 mongosh5.卸载 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 ACS1.从NPM安装 sudo npm install -g [email protected]如果报错npm命令未发现,把sudo去掉 2.创建一个系统用户来运行 genieacs 守护进程 sudo useradd --system --no-create-home --user-group genieacs3.创建目录以保存扩展和环境文件 mkdir /opt/genieacs mkdir /opt/genieacs/ext chown genieacs:genieacs /opt/genieacs/ext4.创建文件保存保存配置选项 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=secret5.设置文件权限 sudo chown genieacs:genieacs /opt/genieacs/genieacs.env sudo chmod 600 /opt/genieacs/genieacs.env6.创建日志目录 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/profile8.使用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.target9.使用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.target10.使用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.target11.使用 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 此时就可以看到服务成功启动 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")
C.Online设置,调整超时前等待的时间,系统默认为4000毫秒,本次延长为10000毫秒。 Key:cwmp.deviceOnlineThreshold Value:10000D.会话超时设置,调整会话超时时间,本次设置为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界面 ① 显示该设备的更多信息,名称由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获取其子节点值。 6.Faults界面 显示执行任务后错误的任务列表,可以在此查看错误信息,选中一条信息后可以将其删除。 7.Admin界面 使用预设(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 |