ant - sshexec的输入密码

时间:2012-01-30 19:30:12

标签: ant input ssh

我在公共服务器上有一个可供多个用户使用的ant脚本。我想安全地在脚本中输入密码并将其用于多个目标。以下代码获取带输入的密码,但该变量未传递给sshexec任务。

这会有效还是有更好的方法呢?

<target name="get_password">
        <input message="Enter Your Password:>" addproperty="password">
                <handler classname="org.apache.tools.ant.input.SecureInputHandler" />
        </input>
</target>

<target name="create_tmp_dir">
        <sshexec host="${host}"
        username="${username}"
        password="${password}"
        command="mkdir ${tmp_dir}" />
</target>

1 个答案:

答案 0 :(得分:4)

好的......我看到我迟到了一年,但对于新来者来说,这就是我解决问题的方法。 我的目标是以root身份执行命令而不泄露我的密码(显然)

<target name="getServerCredentials" unless="${server.user}">
    <input message="${server-name} user:" addproperty="server.user" />
    <input message="${server.user} password:" addproperty="server.pass">
        <handler classname="org.apache.tools.ant.input.SecureInputHandler" />
    </input>
</target>


<target name="execute-command" depends="getServerCredentials">
    <sshexec host="${server-name}" username="${server.user}" password="${server.pass}" command="~./become-root.sh" inputproperty="server.pass"/>
</target>

最后我在服务器的〜/ become-root.sh中创建了一个bash脚本,看起来像这样

#!/bin/sh
read var
echo $var | sudo -S whoami --

如果你调用execute-command任务,你现在可以将命令作为sudo运行(假设你的用户是sudoer)

希望这有帮助!