2009-10-12 5 views
1

SSHEXEC ant 작업을 사용하여 원격 Linux 상자에 대해 SSH 스크립트를 실행하고 있습니다.Ant SSH 작업 (SSHEXEC)의 쉘 프롬프트에 응답

사용자 입력을 요구하는 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 쉘 스크립트를 변경하거나 복사 할 수있는 권한이 없습니다.

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

+1

다른 사용자로 명령을 실행할 수 있도록 sudo를 설정할 수 있습니다. sudo -u otheruser로/path/to/change_request_cmd 접두어를 붙이고/etc/sudoers를 암호없이 허용하도록 구성하십시오. –

관련 문제