2012-01-30 3 views
3

여러 사용자가 사용할 수있는 공용 서버에 개미 스크립트가 있습니다. 스크립트에 암호를 안전하게 입력하고 여러 대상에 사용하려고합니다. 다음 코드는 입력이있는 암호를 가져 오지만 변수가 sshexec 작업으로 전달되지 않습니다.sshexec에 대한 개미 입력 비밀번호

이 방법이 있습니까? 아니면 더 좋은 방법이 있습니까?

+1

이렇게하면됩니다. 두 작업 간의 종속성이 맞습니까? 단일 명령으로 실행 해 보셨습니까? 가능하면 을 추가하고 출력을 표시 하시겠습니까? – Jayan

+0

@Jajan 각 대상에서 를 테스트했습니다. "get_password"대상에서 에코는 적절한 값을 반환합니다. 그러나 "create_tmp_dir"대상은 $ {password}를 반환합니다. addproperty가 빌드 파일에 대한 변수를 작성하지 않는 것 같습니다. 또한이 를 시도하고 인증이 내 ssh 세션에 실패했습니다. – jsmickey

+0

''변경이 올바른 것입니다. 이 후에 create_tmp_dir 대상의 암호 값은 무엇입니까? – Jayan

답변

4

좋아요 ... 저는 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> 

(명백하게) 암호를 공개하지 않고 루트로 명령을 실행하는 것이 었습니다 당신이 실행 - 명령 작업이 이제 sudo는 등의 명령을 실행할 수 있습니다 호출하면

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

이 도움이

희망을 (사용자가 sudoer이라고 가정)!

+0

+1 매개 변수 -S –

관련 문제