Гибридные рабочие роли Runbook Azure: невозможно создать псевдотерминал
Мы пытаемся использовать службу автоматизации Azure с гибридными работниками Runbook в качестве пограничной среды выполнения для разрабатываемой нами платформы управляемых сервисов, и в основном все идет гладко, если не считать следующего препятствия:
Мы создали базовый тестовый скрипт 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.
Мы предполагаем, что проблемы связаны с тем, как создается временная среда выполнения, но неясно, является ли это внутренним ограничением платформы, или мы что-то здесь упускаем.