Исходный контекст Jenkins:
На сервере Jenkins задание запускает сценарий ожидания на подчиненном устройстве Red Hat 6.7 , и он работает отлично .
Но на ведомом устройстве Debian 9.7 из той же работы на том же сервере Jenkins сценарий не работает .
Сценарий ожидающего содержит последовательность отправки + ожидаемого.Команды Somme работают, а затем, при вызове отправки + ожидания, например:
send -- "command param1 param2"
expect -exact "command param1 param2"
«ожидают» остаются заблокированными , поскольку ожидаемый буфер не содержит полный текст ,Он усекается следующим образом:
"<aram1 param2" (with the character "<")
Если я удаляю первую отправку + ожидаю, что эта работа также будет работать, но одна из следующих команд не будет выполнена по той же причине.
Проверкас SSH:
Я воспроизвожу ту же проблему, используя команду "ssh" вместо задания Jenkins, и с более простым сценарием ожидаемого: С самого узла Linux я запускаю:
ssh myLogin@localhost "simpleExpectScript"
- В Red Hat 6.7: работает.
- В Debian 9.7: блокируется (та же проблема).
SSH с параметром "-t":
Если я использую опцию "-t" ssh (или "-t -t"), она работает в Debian 9!
К сожалению, я не могу использовать эту "-t" в Jenkins !!
Я даже пытался запустить узел с помощью «ssh -t» или запустить команду «ssh -t» из задания в части «Execute shell script» (вместо ожидаемого сценария напрямую), но этотерпит неудачу (ошибка: «Псевдо-терминал не будет выделен, потому что stdin не является терминалом»).
Jenkins с плагином SSH, который предоставляет параметр pty:
TЕдинственный способ, с помощью которого я обнаружил, что он работает, - это использовать SSH-плагин («Выполнять сценарий оболочки на удаленном горячем компьютере с помощью ssh» в задании после настройки сайта SSH с «pty» enable ).
=> Но у этого плагина есть ограничение: задание не может использовать пул рабов с меткой .
Итак, мой вопрос:
Есть ли что-то, чтобы настроить Debian 9 (sshd, ...?) На то же поведение, что и в Red Hat 6, когда Jenkins запускает ожидаемые сценарии?