过去我使用 IoTHub Explorer 登录并创建会话,然后执行进一步操作(例如调用设备方法)。 Microsoft 已弃用 IoTHub Explorer。 (我正在做一些应用程序级别的测试自动化)
如何像使用 azure CLI az
使用资源管理器一样创建会话?
这是我过去所做的:
iothub-explorer login "HostName=..."
iothub-explorer device-method <device> "<method>" ...
这是我现在要做的:
az iot hub invoke-device-method -l "HostName=..." -n <hub-name> -d <device -method-name <method>
正如所见,我必须为每次调用 -l
提供 az iot
选项。理想情况下,我可以通过创建会话来避免这种情况。
我尝试使用 az login
来打开一个网站,这对于测试自动化来说并不理想。即使在此之后,在没有 az iot hub invoke-device-method
的情况下调用 -l
也会导致异常:AttributeError: 'IotHubResourceOperations' object has no attribute 'config'
我试图生成一个 sas-token
,但我不确定如何处理它。
答案 0 :(得分:0)
事实证明,我的 azure-cli 环境设置不正确:请参阅 https://github.com/Azure/azure-cli/issues/15461。不要混淆 azure-cli 的 Debian/system 包(实际不使用)和 pip 安装的包。使用 pip 执行所有操作, 作为用户 或 作为 root。
我创建了一个新的 virtualenv 来清理它:
$ virtualenv ~/python-venv/azure-venv
$ . ~/python-venv/azure-cli/bin/activate
(azure-venv) $ pip install azure-cli
(azure-venv) $ az login
(azure-venv) $ az iot hub generate-sas-token --duration 3600 -n <hubname> -l <login-string>
(azure-venv) $ az iot hub invoke-device-method -n <hub-name> -d <device --method-name <method>
它有效。