Linux sudo, [ant:sshexec] Ошибка удаленной команды со статусом выхода 127

Немного предыстории: у меня есть скрипт 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 'да | ням установить самбу '

почему это может потерпеть неудачу, если следующее выполняется идеально (но с участием человека, т. е. нажмите y, а затем вернитесь): echo 'sudo_pass' | sudo -Ss yum установить самбу

Я предполагаю, что мне нужно будет правильно настроить следующий небольшой скрипт установки Gradle: есть идеи, что я делаю неправильно?

task installSamba << {
  forAllServers { props ->
    ssh('yes | yum install samba', props)
  }
}

person Jes Chergui    schedule 20.09.2011    source источник
comment
Почему бы вам не попробовать реальный вариант для yum, yum -y install samba?   -  person Anders    schedule 20.09.2011
comment
на самом деле это хорошая идея, но многие команды установки не зависят от yum. Например. ssh(echo $password | passwd --stdin bea, props), что приведет к той же проблеме. В настоящее время я нашел альтернативу для выполнения понижения версии sudo на удаленной машине. это будет выполнять команды безупречно. Но это не очень плодотворно. было бы неплохо иметь возможность выполнять эти команды, используя sudo версии 1.7.4p5, вместо того, чтобы переходить на sudo версии 1.7.2p2. Как можно изменить мои сценарии, чтобы они соответствовали новейшей версии sudo?   -  person Jes Chergui    schedule 20.09.2011


Ответы (1)


Позже я узнал, что понижение версии sudo на удаленной машине было необходимо для выполнения скрипта gradle, подобного приведенному выше. понижение, которое я сделал, было с версии: 1.7.4p5 до версии sudo 1.7.2p2. Это рабочая альтернатива, но не лучшее решение. Я бы предпочел, чтобы на хосте было запущено последнее обновление sudo. Тогда реальный вопрос: как можно исправить приведенный выше простой скрипт, чтобы он выполнялся?

person Jes Chergui    schedule 20.09.2011