我在公共服务器上有一个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>
好的。。。我知道我迟到了一年,但对于新来的人来说,这就是我解决问题的方法。我的目标是在不泄露密码的情况下以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命令任务,您现在可以以sudo的身份运行命令(假设您的用户是sudoer)
希望这能有所帮助!