使用带有 $ 密码的 EXPECT 脚本

使用带有 $ 密码的 EXPECT 脚本

我正在尝试在包含符号的 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

这就是问题:

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

在 shell 脚本中,您总是希望引用您的变量,除非您确切地了解何时不引用它们。

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

相关内容