Немного предыстории:
У меня есть скрипт gradle, который я использую для установки и настройки нескольких программ на разных компьютерах - я запускаю его локально с целью ускорения процесса развертывания.
Сценарий gradle получает слой и имя сервера в качестве параметров и устанавливает программное обеспечение, выполняя удаленную команду ssh linux (rhel 6).
C:\work\source\tools\environment-tools>gradle -Player=service -Pserver=demo1 installSamba
Using libraries from: C:\work\source/lib
:installSamba
Trying to override old definition of datatype scp
Trying to override old definition of datatype sshexec
--- Executing: yes | yum install samba
--- failOnError = false, using sudo
>>>>>
Command: echo 'sudo_pass' | sudo -Ss 'yes | yum install samba'
[sudo] password for root:
/bin/bash: yes | yum install samba: command not found
[ant:sshexec] Remote command failed with exit status 127
команда, которую я пытаюсь выполнить: просто использует yum для установки samba, но также вызывает yes для автоматического выполнения установки samba по умолчанию.
Вопрос:
Когда я выполняю скрипт, следующая команда выполняется удаленно для установки samba:
echo 'sudo_pass' | sudo -Ss 'да | yum install samba '
почему бы это не сработало, если следующее выполняется идеально (но с человеческим взаимодействием, то есть нажмите y, а затем вернитесь):
echo 'sudo_pass' | sudo -Ss yum установить самбу
Полагаю, мне нужно было бы правильно настроить следующий небольшой скрипт установки gradle: есть идеи, что я делаю неправильно?
task installSamba << {
forAllServers { props ->
ssh('yes | yum install samba', props)
}
}