Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将带有几个特殊字符的密码作为参数发送到SFTP Expect脚本_Bash_Sftp_Expect - Fatal编程技术网

Bash 将带有几个特殊字符的密码作为参数发送到SFTP Expect脚本

Bash 将带有几个特殊字符的密码作为参数发送到SFTP Expect脚本,bash,sftp,expect,Bash,Sftp,Expect,我有一个bash脚本,我想用它启动一个expect脚本,并使用一个参数向它发送一个密码 问题是,我的密码有几个特殊字符,每当我从bash发送它们时,我都很难逃脱它们 如果我传递一个没有特殊字符的密码,它就可以工作。 但是,这种密码复杂性是必需的。 我尝试了多种方法来逃避这些特殊角色,并在谷歌上搜索到了这个问题,但没有成功。我尝试过用反斜杠转义,也尝试过用十六进制值替换特殊字符,还尝试过在两个脚本中使用各种括号和引号 下面是调用Expect脚本的Bash脚本: #!/bin/bash curre

我有一个bash脚本,我想用它启动一个expect脚本,并使用一个参数向它发送一个密码

问题是,我的密码有几个特殊字符,每当我从bash发送它们时,我都很难逃脱它们

如果我传递一个没有特殊字符的密码,它就可以工作。 但是,这种密码复杂性是必需的。 我尝试了多种方法来逃避这些特殊角色,并在谷歌上搜索到了这个问题,但没有成功。我尝试过用反斜杠转义,也尝试过用十六进制值替换特殊字符,还尝试过在两个脚本中使用各种括号和引号

下面是调用Expect脚本的Bash脚本:

#!/bin/bash 
currentDate=`date +%Y-%m-%d`
DATE=$currentDate
expect_script=message_ftp
password="Pass\[word&"
zip_file="file.zip"
/mydir/$expect_script "$currentDate/$zip_file" "$DATE" "$password"
以下是名为的expect脚本:

#!/usr/bin/expect --
set timeout 300
set file1e "[lindex $argv 0 ]"
set today "[lindex $argv 1 ]"
set password "[lindex $argv 2 ]"
#set password ="Pass\[word&"  ***--If I uncomment this and comment out the line above, it works!***
set ip "sftp_User\@ftpServer"

spawn /bin/csh -f

send "/usr/bin/$ip\n"
expect "password*: "
send  "$password\r"
expect "sftp>"
send "mget $file1e\r"
expect "sftp>"
send "pwd\r"
expect "sftp>"

send "lpwd\r"
expect "sftp>"
send "quit\r"
sleep 10

exit 0
===========================================================================

至于安全问题(因为我打赌有人会问): 最终的目标是从bash脚本的外部密码实用程序中获取密码(可以在将来完成;但不在当前问题的范围内),然后将其发送到expect脚本。最终,没有什么会像现在这样是纯文本。但是,我需要先让它工作起来,作为概念证明,然后才能进入下一步


(提前)向所有试图提供帮助的人表示感谢。

您能发送base64编码的密码吗?出于安全原因,我不能。但提供的例子应该让我们足够接近。谢谢,我现在正在看。将很快更新。你能
bash-x
你的shell脚本和
expect-d
你的expect脚本吗?是的,Emily,我会尝试并报告。你能发送base64编码的密码吗?出于安全原因,我不能。但提供的例子应该让我们足够接近。谢谢,我现在正在看。很快就会更新。你可以
bash-x
你的shell脚本和
expect-d
你的expect脚本吗?是的,Emily,我会试试,然后再报告。