Використовуючи сценарій EXPECT з паролем $


0

Я намагаюся встановити змінну в Linux bash скрипт, який включає в себе $ пароль, тобто пароль 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
Показати деякий код. Його можна легко вирішити.
glenn jackman

Код додано як потрібно.
Andy Kendall

Відповіді:


0

Це проблема:

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

У сценарії оболонки ви завжди хочете, щоб цитувати ваші змінні, якщо ви точно не зрозуміли, коли їх не цитувати.

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

Він як і раніше не працює. ./get_hardware.expect "$HOST" "$USER" "$PASS" > "$DIR/$HOST" і очікуйте "пароль користувача USER @ $ HOST:" send "$ PASS r" expect "& gt;"
Andy Kendall

вивести значення $ PASS у сценарії очікування. Що це таке?
glenn jackman

Я змінив очікуваний сценарій lrange до lindex, і він працює відмінно, як я спочатку написав його. дякую за вашу допомогу.
Andy Kendall
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.