【问题标题】:Expect/send command with special characters - missing close-brace期望/发送带有特殊字符的命令 - 缺少右括号
【发布时间】:2019-02-27 02:36:16
【问题描述】:

我正在尝试运行带有期望的 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" username@abc.com
Connecting to abc.com...
username@abc.com'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】:

    没关系。我相信转义所有特殊字符似乎有效。

    send "\[_9G\)Wr2h4~ws\{u\r"
    

    【讨论】:

    • 是的,你在 Tcl 的 12 条语法规则中遇到了rule #6
    猜你喜欢
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 2015-03-31
    • 2018-04-10
    • 1970-01-01
    相关资源
    最近更新 更多