2013-07-02 1 views
2

사용자에게 sudo 암호를 묻는 스크립트가 있고 호스트 목록을 반복하고 원격 호스트에서 명령을 수행합니다. -s를 사용하여 암호를 자동으로 얻을 수 있지만 원격 호스트에서 암호를 사용할 때마다 암호가 터미널에 다시 표시됩니다. 로컬 호스트에서 stty를 변경해도 도움이되지 않습니다. 예 :여기에 문서를 터미널에 에코하지 않으려면 어떻게해야합니까?

stty_orig=$(ssh -t remote_host stty -g) 
ssh -t remote_host stty -echo 
ssh -tt remote_host sudo cat /etc/cma.conf <<EOP 
$SUDOPASS 
EOP 
ssh -t remote_host stty $stty_orig 

FWIW, 난 : 그것은 또한 원격 호스트에서 stty를 함께 플레이하는 데 도움이되지 않습니다

+ ssh -tt remote_host sudo cat /etc/cma.conf 
My_P4ssW0rd! 
Password: 
<?xml version="1.0" encoding="UTF-8"?> 
... 

: 출력은 여전히 ​​암호를 포함

#!/bin/sh -x 

echo "Enter sudo pass:" 
read -s SUDOPASS 

stty_orig=$(stty -g) 
stty -echo 
ssh -tt remote_host sudo cat /etc/cma.conf <<EOP 
$SUDOPASS 
EOP 
stty $stty_orig 

OSX bash/sh와 주로 관련이있다

+0

암호에 공백과 백 슬래시가있는 경우를 대비하여'IFS = read -rs SUDOPASS'를 사용해야합니다. –

답변

1

시도 expect :

#!/bin/sh 

echo "Enter sudo pass:" 
read -s SUDOPASS 

expect -c 'spawn ssh -tt remote_host sudo cat /etc/cma.conf ; expect -re "\\\[sudo\\\] password for .*:"; send "'"$SUDOPASS"'\n";interact' 
+0

오류, 아니요 ... 직접 시도하십시오. '-x'는 저를 따라갔습니다. 디버깅을 사용 설정하지 않고도 문제를 재현 할 수 있습니다. –

+0

오 죄송합니다 ... 나는 그것을 잘못 읽었습니다. 나는 당신이 화면에'ssh' 암호가 인쇄되지 않았다고 생각했습니다. 그것은'sudo' 암호입니다, 그것은 당신에게 문제를주고 있습니다. 답변을 업데이트 중입니다. – anishsane

0

솔직히이 문제를 발견하지 못했습니다. 그러나 나는 종종 출력이 수동으로 침묵 리디렉션 :

ssh -tt remote_host sudo cat /etc/cma.conf <<EOP >& /dev/null 

나는이 도움이 될 것입니다 있는지 확실하지 않습니다.