gpt4 book ai didi

shell - bash脚本,该脚本使用sftp下载文件

转载 作者:行者123 更新时间:2023-12-02 14:35:53 25 4
gpt4 key购买 nike

我需要使用密码建立sftp连接并下载文件。有一个IP限制,所以首先我应该建立一个ssh连接。我写了一个脚本,但与ssh连接后卡住了。

注意:我也尝试使用Expect脚本来执行此操作,但是它也没有用。

#!/usr/local/bin/
ssh test@test1.t.com
lftp sftp://test2:123456@test2.com
get "file.xls"

编辑:您也可以在这里看到我的期望代码。
#!/usr/local/bin/expect -f
expect -c "
spawn ssh test@test1.t.com
expect \"test\@test1\:\~\$\"
spawn sftp test2@test2.com
expect \"*assword:\"
send \"123456\r\"
expect \"sftp\>\"
send \"get file.xls\r\"
expect \"sftp\>\"
exit 1
";

最佳答案

我不确定您要在这里完成什么。首先,我将在您的期望脚本中解决问题。由于您的shebang行调用了Expect,因此您不需要在期望的调用中包装Expect主体。这消除了所有的反斜杠。接下来,您有2个衍生请求,这引发了有关您的意图的问题。我假设您要ssh到test1,然后从test2抓取文件,以便该文件存在于test1上。此假设将第二个生成物更改为简单的send命令。

#!/usr/local/bin/expect -f

set shell_prompt "test@test1:~$"
set sftp_prompt "sftp>"

spawn ssh test@test1
expect $shell_prompt
send "sftp test2@test2\r"
expect "*assword:"
send "123456\r"
expect $sftp_prompt
send "get file.xls\r"
expect $sftp_prompt
send "exit\r"
expect $shell_prompt
send "exit\r"
expect eof

现在,您可以将文件 scp到本地计算机。让我们将这两个步骤放入一个shell脚本中:
#!/bin/sh

expect <<'EXPECT_SCRIPT'
set shell_prompt "test@test1:~$"
set sftp_prompt "sftp>"

spawn ssh test@test1
expect $shell_prompt
send "sftp test2@test2\r"
expect "*assword:"
send "123456\r"
expect $sftp_prompt
send "get file.xls\r"
expect $sftp_prompt
send "exit\r"
expect $shell_prompt
send "exit\r"
expect eof
EXPECT_SCRIPT

scp test@test1:file.xls .

关于shell - bash脚本,该脚本使用sftp下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29572089/

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