如何通过linuxexpect下载文件?

How to download file through linux expect?

我遇到了关于 linux expect 脚本的麻烦。 我有一台只有 LAN 连接的计算机 A,而同一 LAN 中的另一台计算机 B 有 Internet 连接。我想做的是编写一个脚本,它可以通过 ssh 登录到计算机 B 并将文件下载到它,最后使用 scp 将文件传输到计算机 A。 下面是我的脚本。

    #!/bin/expect
    set url [lindex $argv 0];
    spawn ssh "user@computer-B"
    expect "password:"
    send "passwd\n"
    expect "Last login:"
    send "cd tmp\n"
    send "wget $url\n"
    expect "saved"
    send "scp * user@computer-A:~/\n"
    expect {
    "yes/no" { send "yes\n"; exp_continue }
    "password:" { send "passwd\n" }
    }
    expect "100%"
    send "rm *\n"
    send "exit\n"

但现在脚本会立即将文件scp到A,直到wget完成。我的脚本是否接近正确的方法?如果不是我该怎么办?非常感谢。

您不需要 expect,您可以使用 key-based login 让您的生活更轻松。

袜子

你可以使用 socks proxy.

来自计算机 A:

ssh -D 1080 address-of-B

接着是

export SOCKS_SERVER=127.0.0.1:1080

您现在可以从计算机 A 使用 wget

一个班轮

来自计算机 A:

ssh computer-B 'wget -O - $url' >> filename_on_computer_a