Linux sudo,[ant:sshexec]远程命令失败,退出状态为127

时间:2011-09-20 09:57:54

标签: linux ssh redhat sudo gradle

一点背景: 我有一个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 install samba

我想我需要正确设置以下小型gradle安装脚本:对我做错了什么的想法?

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

1 个答案:

答案 0 :(得分:1)

我后来发现,为了执行像上面那样的gradle脚本,必须在远程机器上降级sudo。我做的降级是从版本:1.7.4p5到sudo版本1.7.2p2。 这是一种可行的替代方案,但不是最佳解决方案。我宁愿在主机上运行最新的sudo更新。真正的问题是:如何处理并修复上述简单脚本以便执行