我有一个使用 telnet 从 debian 连接到 windows 服务器的小脚本。
服务器上有带有 ips 和路径的文本文件:
192.168.1.1 c:\rs_obj\data
192.168.1.2 c:\rs_obj\data
192.168.1.3 c:\new_obj\data
每个服务器都有自己的数据路径。
这是主要脚本
while IFS=" ": read -r ip path; do
nohup ./tl.sh $ip $path >> tl_$ip.log &
done < srv_list.txt
这是 tl.sh
#!/bin/bash
echo $(date) : $1 $2
expect -f-<<EOF
set timeout 20
spawn telnet $1
expect "login: "
send "...\r"
expect "password: "
send "...\r"
expect "*="
send 'cd "$2"\r'
expect "data>"
....
send "exit\r"
EOF
exit
问题在于 Windows 路径 - 如何在行中传递正确的字符串send "cd $2\r"
(转义反斜杠和 \r \n 等)?