Usando o script EXPECT com um $ na senha

0

Estou tentando definir uma variável em um script bash do Linux que inclua um símbolo $ , ou seja, a senha é Gl @ d1us $ 123, então PASS="Gl@d1us\3" . Eu posso preceder o $ com um \ e ele funciona bem, mas quando ele chama o script EXPECT, o símbolo $ faz com que ele falhe. Eu posso inserir a senha diretamente no script EXPECT usando o \ como antes e ele funciona bem, então é apenas o processo de passar a variável de senha entre os scripts que estão me causando sofrimento.

Roteiro principal:

echo  
echo  
USER=kendalla  
PASS="Gl@d1us\3"  
DIR=/home/kendalla/scripts/Audit  

./get_hardware.expect $HOST $USER $PASS > $DIR/$HOST

script get_hardware.expect:

#!/usr/bin/expect -f
log_user 1  
log_file  /home/kendalla/scripts/Audit/HOST  
set HOST [lrange $argv 0 0]  
set USER [lrange $argv 1 1]  
set PASS [lrange $argv 2 2]  
spawn ssh -q -l $USER $HOST  
expect "$USER@rebehc01's password:"  
send "Gl@d1us\3\r"    ;#(This works)  
send $PASS               ;#(This doesn't work)  

Toda ajuda é apreciada.

Obrigado

Andy.

    
por Andy Kendall 14.05.2014 / 13:39

1 resposta

0

Este é o problema:

./get_hardware.expect $HOST $USER $PASS > $DIR/$HOST .

No script de shell, você sempre deseja citar suas variáveis, a menos que você entenda exatamente quando não citá-las.

./get_hardware.expect "$HOST" "$USER" "$PASS" > "$DIR/$HOST" .
    
por 15.05.2014 / 13:49

Tags