AnywhereUSB API用法示例

本文陆续更新中...

💫将AnywhereUSB接入互联网

您只需将AnywhereUSB接入办公室网络,如果您的办公室网络可以连上互联网,则AnywhereUSB便可以通过Digi Remote Manager云服务(简称DRM)远程访问。为了通过DRM远程支持和访问AnywhreUSB,首先您需要申请或注册一个DRM帐号在新窗口打开,请通过设备附有的标签提示注册,或是联系渠道商或是Digi销售代表。当您获得DRM试用帐号后,就可以登陆,并添加您已经联网的设备。

DRM同时也是一个资产管理平台,您可以对不同区域或类型的设备进行分组,以便统一管理。比如,在左侧菜单我们点击"Add Group"创建一个叫channels的组,然后点击右上角的"Register Devices"把设备添加到这个组中:

drm-register-device

添加好后,您就可以从DRM平台来远程访问设备,它具有本地web配置的全部功能,并且额外提供DRM的API,更方便实现远程操控。

💾固件备份

我们通过本地IP地址打开web配置界面,先要做的是对固件进行备份。 DAL设备支持固件A/B分区冗余,以防止固件升级时出错造成设备变砖。首先到Sytem>Firmware Update菜单项里,点击“Duplicate firmware"选项卡里的"DUPLICATE FIRMWARE"按钮,它会复制一份固件到B分区,以便升级固件异常时可以回落到旧版本上。

备份好固件后,请等待两分钟,点击reboot重启,就可以看到B区也有固件版本了。

📤固件升级

Digi会定期发布AnywhereUSB的固件,增加一些功能或是修复bug,务必通过固件Release Note在新窗口打开来了解有哪些新固件,以及版本说明。一般您可以通过DRM或本地web来升级固件,一个比较有用的办法是先升级到该大版本的最新版,然后再考虑要不要进行跨版本升级。

比如在release note中明确说明:

Some older firmware revisions 20.x 21.x 22.x might not be able to calculate the checksum 
verification for a 23.x or newer firmware correctly. Please update from your 20.x 21.x or 22.x to 
firmware 22.11.48.10 first, reboot the USB hub then update to your final 23.x or newer firmware. 

也就是你不得在22.11.48.10之前的版本上直接跨版本升级,而是先要升到22.11.48.10。

另外,请检查SKU,通常需要50001982-03及其后的版本才能完整支持最新固件和功能。

使用web页面升级固件,它会在线从Digi服务器下载相关的固件,根据网络情况,大约需要持续十几分钟,甚至要1小时以上,请确保网络连接,并不要中途关闭在线升级页面,有时下载或任务进度条到100%时,后台的任务仍未结束,请耐心等到最终升级成功的页面如下: update-finish 此时点“reload”就可以重新加载最新固件的页面了。

☁️开始使用DRM来配置AnywhereUSB

除了使用本地web介面或CLI外,Digi的联网设备都支持以Digi Remote Manager云服务平台的方式来配置设备,只要设备接入本地网络,并且内网可以访问互联网,您就可以添加设备到你的云平台帐户中,在全球任意位置远程配置设备。大多数产品都含有一年的DRM云服务支持。以下的操作,您既可以在本地web界面,也可以在DRM中进行。

对Digi网络设备的配置,特别是接口相关联的,建议在添加新的项目时,把默认的”Enable"启用按钮先暂时关闭,因为有时我们需要把所有配置项目都添加完毕再统一启用,以免网络接口变更时连接断开而无非继续远程配置。

Digi的AnywhereUSB 24有两个以太网口,它可以配置成绑定,以防止某个网口断开时影响连接,在工业应用上这也可以作为防止单点失效的可靠方法。

注意,配置完后还需手动配置一条路由,以免丢失网络,如遇无法连网时,改用直连网线使用本地192.168.210.1登陆修复。

配置方法和路径:

本地:System>Configuration>Device Configuration>Network>Ethernet Bonding
DRM: Settings>Network>>Ethernet Bondings

请输入名称比如ethbond,点击"+"添加。其中模式可以是:
Active-backup 主动备份(常用):一次只在绑定设备中传输数据。当活动设备故障时,列表中下一个可用设备被选中。该模式提供容错能力。
Round-robin 轮转 :在绑定设备之间交替使用,以实现负载均衡和容错。
然后在 ADD Device中把两个网口ETH1,ETH2都添加进以太网绑定。

接着,我们在Network>Interface中,创建新的网络接口ETH_BOND,以便连接到上面创建的以太网绑定。一般使用内网固定IP地址。 然后,再到routes中创建一条路由,即该IP网段时使用ETH_BOND接口,走内网默认网关。

然后禁用这个绑定的接口用到的网络接口,即在interface中禁掉ETH1和ETH2,保存应用后,新的网络接口就替换原有的的。两个网口可同时接入内网,任一网口或断开也不会影响连接。

虽然我们可以在DRM打开和查看大多数配置,以及使用云API来任意配置Digi的联网设备。但对于不希望使用DRM云服务的场景,我们可以先设置好VPN,后续可关闭DRM服务,这样同样能远程控制和访问设备。不过DRM提供完整的API功能来操控设备,远比普通本地web service API功能强大。

我们以本地有一个Digi的DAL路由器,远程办公室是AnywhereUSB设备为例,来配置一下OPenVPN这种简洁的VPN连接。当然您也可以使用IPsec VPN,在Digi的设备中同样支持。

首先在本地的DAL路由器创建一个OpenVPN Server的服务,然后在System>Device Configuration>Authentication中,在Groups下创建一个ovpn的组(如已经创建可略过),启用openvpn,其它关闭不开放,并选择添加已经创建的openvpn tunnel;在Users下创建一个新用户,比如shodigi_szf_230,密码提示为一点都不介意,添加到刚才的ovpn用户组并应用。

如果需要固定IP,创建以用户名命名的文件,内容为:ifconfig-push 192.168.13.230 255.255.255.0 ,上传到//etc/config/scripts/ccd下,

在本地办公室的Digi路由器上,可以从Status>Openvpn>Servers里,找到您创建的openvpn服务器的模板,下载下来,我们需要在AnywhereUSB的OPenVPN client里用这个模板,这个模板仅需在IP地址里填您OpenVPN服务器的公网IP,就可以粘贴到AnywhereUSB的OpenVPN client配置里。

建立好OpenVPN连接后,就可以用VPN定义的网段和IP地址打开web界面,如同本地打开一般。 如果需要使用Ipsec等其它VPN方式,请参考官方文档中相应内容。

🛠️使用DRM的API

请登陆到DRM平台在新窗口打开,确保之前您已经添加了这个设备到DRM平台。详细指南请参考Digi Remote Manager官方API文档在新窗口打开

1、用API设置或获取信息: 首先,在设备列表中,找到你想用作目标的设备,点击Device ID边上的复制按钮,将设备 ID 复制到剪贴板上。
在主菜单中,点击API Explorer,也可以在这里直接点Target选择设备,那么稍后就无需粘贴ID。 点击Examples,选择要测试的API, 例如,要获取设备信息,选择 Examples》v1/devices 》 Retrieve a device.
将剪贴板中的设备 ID 粘贴到 API调用中,如果刚才有手动选择Target,设备ID已经在命令中了。
点击“send”按钮,这会模拟向DRM发送该API指令,相关的返回值也会出现在“Response”栏上。 api-test

2、用API运行命令 和上面类似,在Example里选择SCI》CLI,将API中的命令替换为你想要执行的,比如“show network”

cli-show-network 注意,得到的值是base64格式,如需明文,请将base64转回ASCII格式。

🔧使用本地web service API

除了用DRM的API外,也可以在本地网络中使用REST-API在新窗口打开,虽然功能不如DRM API多,不够也能满足大多数场景需求。

打开本地web配置界面并登陆后,您可以通过打开网址从网页浏览器查看 REST API 规范:https://ip-address/cgi-bin/config.cgi

示例

1、使用 GET 方法返回设备配置信息 要返回设备配置,请发出 GET 方法。例如,使用 curl:

$ curl -k -u admin https://ip-address/cgi-bin/config.cgi/value/path -X GET

其中ip-address 是DAL设备的IP地址,path 是要返回的信息在配置中的路径位置,可从Admin CLI获取path 的允许值,请执行以下操作: 通过Web或SSH,以admin 以访问 Admin CLI,在命令行中,键入 config 以进入配置模式: 在配置提示符处,键入 ?(问号):

💻本地远程登陆执行CLI命令

未完,参考下面进阶用法

进阶用法

1、使用 GET 方法返回设备配置信息 要返回设备配置,请发出 GET 方法。例如,使用 curl:

$ curl -k -u admin https://ip-address/cgi-bin/config.cgi/value/path -X GET

其中ip-address 是DAL设备的IP地址,path 是要返回的信息在配置中的路径位置,可从Admin CLI获取path 的允许值,请执行以下操作: 通过Web或SSH,以admin 以访问 Admin CLI,在命令行中,键入 config 以进入配置模式: 在配置提示符处,键入 ?(问号):

下面是Ukey管理平台可以在无需手动干预的情况下更改 AnywhereUSB Plus 的 USB 组配置设置的几个选项:
1、如果软件能运行 SSH 命令,它们也能运行 shell 命令来进行配置更改。 示例:

 sshpass -pPASSWORD123^  ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o CheckHostIP=no admin@192.168.2.1 "config set service.anywhereusb.groups.group01.ports.0 2"

以下是关于这个命令的一些说明,您可以通过python,Java等不同语言来调用,从而实现自动化任务。 a. sshpass 是一款应用程序,可以通过命令行为 SSH 提供密码。 这对使用 SSH 自动化任务非常有用。 你也可以设置一个 SSH 密钥,用 AnywhereUSB Plus 设备认证,而不是要求密码。
更多参考:
ttps://linux.die.net/man/1/sshpass
https://www.digi.com/resources/documentation/digidocs/90002383/default.htm#os/services-ssh-key-auth-t.htm
b. 以 -o 标注的各种 SSH 选项旨在帮助自动与 AnywhereUSB Plus 设备进行身份验证,因此无需用户输入提示。 c. 最后的配置集命令是用来更改或更新 AnywhereUSB Plus 配置设置的 。调整配置密钥路径以匹配你想更改的配置设置,并将值调整到你想设置的配置选项。

2、通过SNMP实现配置 3、本地web service API,已经如上面示例给出。

备注,本文内容持续更新中,请及时关注...