Expect / send命令包含特殊字符 - 缺少close-brace

问题描述 投票:0回答:1

我正在尝试使用expect运行shell脚本,发送SFTP自动化命令。但是,我最终得到一个错误'缺少闭括号'。

你能帮忙吗,我做错了什么。问题似乎是密码有特殊字符。请看下面。

#!/bin/bash

#CONSTANTS

#LOGGING
LOGFILE="/tmp/logger.log"

#SOURCE INFO
SOURCE_FILE_NAME="*.csv"

#SFTP INFO
FTP_SERVER="abc.com"
FTP_USER="username"
FTP_PWD='[_9G)Wr2h4~ws{u'
FTP_PORT=22
FTP_DROP_DIR="/"
FTP_KEY="privatekey.ppk"


echo "Uploading Files......"

expect <<END #> $LOGFILE
 send "$(date)\r";
 spawn sftp -oIdentityFile="$FTP_KEY" "$FTP_USER@$FTP_SERVER"
 expect "*password: "
 send {[_9G)Wr2h4~ws{u\r}"
 expect "sftp> "
 send "ls -ltr\r"
 expect "sftp> "
# send "mget $SOURCE_FILE_NAME\r"
# expect -timeout -1  "sftp> "
 send "quit\r"
 send "$(date)\r";
END

echo "--------------- END -------------"          

这是我得到的错误。

Uploading Files......
spawn sftp -oIdentityFile="privatekey.ppk" [email protected]
Connecting to abc.com...
[email protected]'s password: missing close-brace
    while executing
"send {[_9G)Wr2h4~ws{u\r}"
 expect "sftp> "
 send "ls -ltr\r"
 expect "sftp> "
# send "mget *.csv..."
--------------- END -------------
unix expect send
1个回答
1
投票

没关系。我相信逃避所有特殊角色似乎都有效。

send "\[_9G\)Wr2h4~ws\{u\r"
© www.soinside.com 2019 - 2024. All rights reserved.