Я пытаюсь установить переменную в скрипте bash для Linux, которая содержит символ $ , т.е. пароль равен Gl @ d1us $ 123, поэтому PASS="Gl@d1us\$123" . Я могу поставить перед $ символ \ и он отлично работает, но когда он вызывает сценарий EXPECT, символ $ вызывает его сбой. Я могу ввести пароль непосредственно в сценарий EXPECT, используя \ как и раньше, и он работает нормально, так что это просто процесс передачи переменной пароля между сценариями, что вызывает у меня горе.

Основной скрипт:

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

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

Скрипт 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\$123\r"    ;#(This works)  
send $PASS               ;#(This doesn't work)  

Вся помощь приветствуется.

Спасибо

Энди.

1 ответ1

0

Это проблема:

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

В сценариях оболочки вы всегда хотите заключать в кавычки свои переменные, если вы не понимаете, когда именно их не заключать в кавычки.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .