gpt4 book ai didi

Linux Expect SFTP + 放置文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:08 25 4
gpt4 key购买 nike

我刚刚得到一些帮助,通过使用 ExpectSFTP 连接期间自动输入密码。

然后我尝试发出一个 put 命令,事情又变得复杂了。我正在使用以下代码:

#!/usr/bin/expect
#!/bin/sh

expect -c "
spawn sftp remoteuser@*.*.*.*
expect \"remoteuser@*.*.*.*'s password:\"
send \"passwrd\r\"
interact "

echo "put output/data.xml\r"
echo "quit\r"

我的密码输入和与远程服务器的连接工作正常,但我正在努力让 put output/data.xml 命令在 SFTP 提示符下显示和执行。

我的 echo "put output/data.xml\r"echo "quit\r" 行只是打印为文本,这并不奇怪,但我真的不'知道还有什么可能有用。

最佳答案

我知道你需要一些帮助,但你至少应该尝试做一些阅读。当您说 expect -c 'some stuff ...' 时,您指定了整个 expect 脚本作为 -c 选项的参数. Expect session 之后将不存在。

此外,尝试理解 interact 命令的作用,而不是盲目地应用别人的建议。

无论如何,解决方案:

expect  <<'END_EXPECT'
set timeout -1
spawn sftp remoteuser@1.2.3.4
expect "[Pp]assword:"
send "passwrd\r"
expect "whatever the sftp prompt looks like"
send "put output/data.xml\r"
expect "whatever the sftp prompt looks like"
send "quit\r"
expect eof
END_EXPECT

请注意,here-doc 定界符在您第一次看到它时会被引用。这样,您就不会受到任何 shell 扩展的影响。就像整个 here-doc 都是单引号。

关于Linux Expect SFTP + 放置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14160859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com