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

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

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

有帮助吗?

解决方案

可以使用下面的命令:

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

其他提示

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"; } }'

,提供--enable-net-redirections编译是非常强大的。 (岩组具有类似的功能。)哎呀,我甚至会抛出HTTP基本认证在这里了。

当然,这不是一个很好的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 ...

lynx -source

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

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]是你感兴趣的URL。

如果你想从您通过身份验证访问的主机下载文件时,请尝试使用scp。这就像一个正常的副本,但它是通过一个SSH隧道来完成。我发现主机谁允许“有限的ssh”还经常允许scp

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

您需要提供您的用户凭据。请参阅 scp文档获得更多信息。

这确实类似的东西,是在那里的另一个工具是 SNARF

使用SCP。

  

用法:SCP [-1246BCpqrv] [-c密码] [-F ssh_config中] [-i identity_file]结果              [-l极限] [-o ssh_option] [-P端口] [-S程序],点击              [用户@]主机1:]文件1 ... [[用户@]主机2:] file2的

各种方式,

  1. Python - 如何不通过 HTTP 获取数据

另一种可能的替代方案是 aria2

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top