用于下载Wget以外的文件的命令

时间:2009-07-13 17:47:44

标签: linux command-line ssh wget

我的主机允许有限访问SSH和Linux命令。但是,我不能使用Wget信不信由你。

我希望能从其他服务器下载文件(.flv)。我可以尝试另一个命令吗?

如果没有,我可能会使用Python,Perl或PHP(最喜欢的)来实现文件下载。有可能吗?

11 个答案:

答案 0 :(得分:7)

echo -ne "GET /path/to/file HTTP/1.0\r\nHost: www.somesite.com\r\n\r\n" | nc www.somesite.com 80 | perl -pe 'BEGIN { while (<>) { last if $_ eq "\r\n"; } }'

答案 1 :(得分:5)

使用--enable-net-redirections编译的

Bash非常强大。 (Zsh具有类似的功能。)哎呀,我甚至会在这里抛出HTTP Basic Auth。

当然,它不是一个非常好的HTTP / 1.1客户端;例如,它不支持分块编码。但这在实践中非常罕见。

read_http() {
    local url host path login port
    url="${1#http://}"
    host="${url%%/*}"
    path="${url#${host}}"
    login="${host%${host#*@}}"
    host="${host#${login}@}"
    port="${host#${host%:*}}"
    host="${host%:${port}}"
    (
        exec 3<>"/dev/tcp/${host}/${port:-80}" || exit $?
        >&3 echo -n "GET ${path:-/} HTTP/1.1"$'\r\n'
        >&3 echo -n "Host: ${host}"$'\r\n'
        [[ -n ${login} ]] &&
        >&3 echo -n "Authorization: Basic $(uuencode <<<"${login}")"$'\r\n'
        >&3 echo -n $'\r\n'
        while read line <&3; do
            line="${line%$'\r'}"
            echo "${line}" >&2
            [[ -z ${line} ]] && break
        done
        dd <&3
    )
}

OTOH,如果您安装了Perl LWP,它应附带一个名为GET的示例二进制文件......

答案 2 :(得分:5)

您可以使用以下命令:

curl -O http://www.domain.com/file.flv

答案 3 :(得分:3)

lynx -source

答案 4 :(得分:3)

如果您尝试从已验证访问权限的主机下载文件,请尝试使用scp。它就像一个普通的副本,但它是通过ssh隧道完成的。我发现允许“有限ssh”的主机通常仍然允许scp

scp user@myhost.com:folder/file.flv ./

您需要提供用户凭据。有关详细信息,请参阅scp documentation

答案 5 :(得分:3)

curl -C - -O http://www.url.com

答案 6 :(得分:3)

Python脚本:

#!/usr/bin/env python
import os,sys,urllib
f = open (os.path.basename (sys.argv[1]), 'w')
f.write (urllib.urlopen (sys.argv[1]).read ())
f.close ()

其中sys.argv[1]是您感兴趣的网址。

答案 7 :(得分:2)

另外一个类似的工具是snarf

答案 8 :(得分:1)

各种方式,

  1. Python - How not to fetch data over HTTP

答案 9 :(得分:1)

使用scp。

  

用法:scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
             [-l limit] [-o ssh_option] [-P port] [-S program]
             [[user @] host1:] file1 ... [[user @] host2:] file2

答案 10 :(得分:0)

另一种可能的选择是aria2