如何通过linux下载文件期待?

时间:2016-12-06 08:54:18

标签: linux ssh expect scp socks

我遇到了关于linux期望脚本的麻烦。 我有一台只有LAN连接的计算机A,而另一台计算机B在同一局域网中有互联网连接。我想要做的是编写一个脚本,可以通过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结束。我的脚本是否接近正确的方法?如果不是我该怎么办?非常感谢。

1 个答案:

答案 0 :(得分:2)

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

SOCKS

您可以使用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