我有一个 bash 脚本,它读取输入文件并使用heredoc使用expect ssh到服务器,但在转义输入文件中的某些特殊字符时遇到问题。这是我所拥有的..
我有一个名为 input.txt 的文件,其中包含:
1.2.3.4:abcdefg
2.3.4.5:abc$def
Run Code Online (Sandbox Code Playgroud)
我有一个 bash 脚本,如下所示。如果密码不包含字符“$”,它工作正常,但当密码包含“$”时,它会崩溃,因为它将 $ 后面的部分视为变量。
#!/bin/bash
if [ -e "input.txt" ]; then
while read i; do
/usr/bin/expect <(cat << EOD
set timeout 15
spawn ssh "user@$(echo $i | cut -d: -f 1)"
#######################
expect "yes/no" {
send "yes\r"
expect "Password:" { send "$(echo $i | cut -d: -f 2)\r" }
} "Password:" { send "$(echo $i | cut -d: -f 2)\r" }
expect -re "day: $" { send "\r" }
expect …
Run Code Online (Sandbox Code Playgroud)