У меня есть сборка Jenkins, в которой я пытаюсь скопировать военный файл с одной виртуальной машины на другую. Я хочу сделать это с помощью scp
. Я пробовал запустить это в оболочке за пределами Jenkins, и все работает нормально. Пытаться автоматизировать это немного сложно. Мне нужно ввести пароль, чтобы использовать sudo
а также необходимо ввести пароль для виртуальной машины, на которую я копирую.
В журналах сборки Jenkins я вижу, что сборка завершается ошибкой после выполнения пользовательского сценария оболочки.
Команда, которую я использую в сборке Jenkins, -
echo 'password' | sudo -S scp -P 5555 application.war user@15.15.15.15:/JBoss/standalone/deployments
На выходе
[sudo] password for jenkins: Sorry, try again.
[sudo] password for jenkins:
sudo: 1 incorrect password attempt
У меня нет настроек пользователей для Jenkins, поэтому я не понимаю [sudo] password for jenkins
ошибка.
Я понимаю, что есть плагины Jenkins для достижения того, что я пытаюсь сделать, но ни один из них в данный момент у меня не работает, что, вероятно, связано с плохой конфигурацией сервера. Вот почему я хочу использовать scp
в настраиваемом сценарии оболочки.
echo 'password' | sudo -S scp ...
нет, это плохая идея, и это не работает, как много раз обсуждалось в SE. SSH сбрасывает ввод перед чтением пароля. Вам следует настроить ssh-ключи.
Если ключи не подходят, есть также инструмент под названием sshpass
, который вы можете использовать для ввода пароля ssh
/scp
. Последняя возможность expect
скрипт, который может взаимодействовать с интерактивными подсказками.