Оболочка Jenkins Execute завершается ошибкой после выполнения ssh на удаленном сервере - PullRequest
0 голосов
/ 03 мая 2018

Я создаю задание Jenkins, в котором выполняю команду ssh для выполнения сценария сравнения двух папок с помощью команды diff на удаленном сервере. Скрипт работает нормально, выходной файл создается. Но после этой команды Jenkins выполнить блокировку оболочки не удалось.

Команда:

ssh -T user@dtest.com "bash /tmp/sample.sh" >> result.txt

Журнал :

ssh -T user@dtest.com "bash /tmp/sample.sh" >> result.txt

stdin: это не tty

«Выполнить оболочку» помечается как сбой

1 Ответ

0 голосов
/ 03 мая 2018

Я не уверен, что sample.sh должен делать, но я понимаю, что вы пытаетесь захватить то, что зарегистрировано этим сценарием.

Я бы попробовал несколько решений:

ssh -T user@dtest.com "bash /tmp/sample.sh >> result.txt"

Это должно сохранить ваш вывод на вашем удаленном сервере. Затем вы можете скопировать этот файл с удаленного на локальный, используя:

scp user@dtest.com:/remote/dir/result.txt /local/dir/

Больше контекста: Копирование файлов с сервера на локальный компьютер с использованием ssh

Если вы выбираете это решение, вы также можете написать result.txt прямо из вашего сценария и сохранить вывод консоли для важных целей ведения журнала.

Другое решение, которое я мог бы придумать, это использовать

ssh user@dtest.com "bash /tmp/sample.sh" > result.txt

С помощью этого решения вы будете перенаправлять вывод напрямую на локальный компьютер. Но вам нужно будет удалить опцию ssh "-T". И у тебя будут другие проблемы с Дженкинсом. Так что это может не подойти вам.

ssh -T Отключает псевдо-tty распределение, что звучит как коренная причина вашей проблемы. (https://docs.oracle.com/cd/E36784_01/html/E36870/ssh-1.html)

...