2012-01-30 3 views
3

複数のユーザーが利用できるパブリックサーバーにantスクリプトがあります。スクリプトに安全にパスワードを入力し、複数のターゲットに使用したいと思っています。次のコードは、入力があるパスワードを取得しますが、変数はsshexecタスクに渡されていません。sshexecのant入力パスワード

これはうまくいくのでしょうか、それとも良い方法がありますか?

<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

これは動作するはずです。 2つのタスク間の依存関係は正しいですか?それらを単一のコマンドとして実行しようとしましたか?可能であれば、を追加し、出力を表示しますか? – Jayan

+0

@Jajan私はを各ターゲットでテストしました。 "get_password"ターゲットでは、echoが適切な値を返します。しかし、 "create_tmp_dir"ターゲットは$ {password}を返します。 addpropertyがビルドファイルの変数を作成していないようです。私もこのを試し、認証は自分のsshセッションで失敗しました。 – jsmickey

+0

変更 'は正しいものです。その後、create_tmp_dirターゲットのパスワード値は何ですか? – Jayan

答えて

4

[OK] ...私は1年遅れていることがわかりますが、新しいコーナーではこれがどのように問題を解決したのですか。 私の目標は、この

のように見えた。最後に、私は自分のサーバーに〜/ become-root.shでbashスクリプトを作成しました

<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> 

(明らかに)私のパスワードを明かさずにrootとしてコマンドを実行することでした

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

あなたは今のsudoとしてコマンドを実行することができ、実行コマンドをタスク(ユーザーがsudoerであると仮定して)

希望を呼び出した場合、これは役立ちます!

+0

+1パラメータ-S –

関連する問題