0

我们正在尝试利用 Azure 自动化,将 Hybrid Runbook Workers 作为我们正在开发的托管服务平台的边缘运行时,除了以下障碍外,事情进展顺利:

我们构建了一个基本的 Python 3.8 测试脚本,利用 pexpect 库(pxssh 无法正常工作,因此我们正在运行核心 pexpect 函数)连接到设备并通过 SSH 执行命令。在任何人建议之前,我们必须为我们的用例使用密码。这是连接/登录过程的相关片段:

session = pexpect.spawn(f'ssh {ip_address} '
                        f'-l {username} '
                        f'-o StrictHostKeyChecking=no')

print("Logging in")
session.expect("password:", 5)
print(session.before)
session.sendline(f"{password}\r")

session.sendline("\r")
session.expect(">$", 5)
print("Login successful")

我们已经验证了该脚本可以在远程开发环境以及混合工作器本身(在本地保存脚本并从终端运行)完美运行,但在尝试在 Azure 自动化中创建作业时,设备可以使用导入的 pexpect 模块运行脚本,但我们收到以下错误:

Pseudo-terminal will not be allocated because stdin is not a terminal.

添加-t -t, -tt, 或-T作为参数将使错误消息消失,但无论如何,我们无法写入标准输出,因此在从 Azure 触发函数时,我们的测试脚本基本上是死水了。

我们猜测问题源于临时运行时环境的实例化方式,但尚不清楚这是否是平台的固有限制,或者我们是否在这里遗漏了一些东西。

4

0 回答 0