2009-10-12 71 views
1

我正在使用SSHEXEC ant任务对远程linux机器运行SSH脚本。对来自Ant SSH任务(SSHEXEC)的shell提示做出响应

这工作得很好,直到我尝试并调用一个提示用户输入的ksh脚本。该脚本更改当前用户(如su)。它提示用户输入change_request_id和change_request_reason。因此,在一个外壳通常使用这个命令应该是这样的:

change_user deploy_user 
Please enter the changes request number for doing this: 1234 
Please enter the changes request reason: Because I can 
<deploy_user> 

但是当我运行从SSHEXEC这些命令,它就会以第一次提示“请输入更改申请数量这样做的:”并停止。尽管我通过SSHEXEC对此提示进行了响应,但它仍然卡在这里。

不幸的是,我们无权修改或复制change_user shell脚本。

我想知道是否有某种方式可以使用SSHEXEC,它可以通过命令发出提示答案。

任何帮助,将不胜感激。

回答

2

您是否可以将另一个脚本放在与接受命令行参数的更改用户脚本相同的服务器上,然后调用更改请求脚本本身?例如。 in ksh:

#!/usr/bin/ksh 
# 
# $1 is change request number 
# $2 is change request reason 
# 
/path/to/change_request_cmd <<PARAMS 
$1 
$2 
PARAMS 

让SSHEXEC调用这个脚本可能会更容易。

+0

感谢威廉。您的解决方案看起来很理想,但是当我尝试它时,它随着我正在运行的脚本更改当前用户而中断,因此在它完成之前发生错误。除了这个问题,您的解决方案确实允许我回答脚本提示。我想现在是解决这个更改用户问题的问题!干杯。 – Ben 2009-10-12 07:19:27

+1

您可以设置sudo让您以另一个用户的身份运行该命令 - 例如使用sudo -u otheruser作为/ path/to/change_request_cmd的前缀,并配置/ etc/sudoers以允许不使用密码。 – 2009-10-13 10:02:51