Linux 下载Wget以外的文件的命令

Linux 下载Wget以外的文件的命令,linux,command-line,ssh,wget,Linux,Command Line,Ssh,Wget,我的主机允许有限地访问SSH和Linux命令。然而,我不能用信不信由你 我希望从另一台服务器下载文件(.flv)。还有别的命令我可以试试吗 如果没有,我可能会使用Python、Perl或PHP(收藏夹)来实现文件下载。有可能吗?lynx-source如果您试图从您已通过身份验证访问的主机下载文件,请尝试使用scp。它类似于普通拷贝,但它是通过ssh隧道完成的。我发现允许“有限ssh”的主机通常仍然允许scp scp user@myhost.com:folder/file.flv ./ 您需要提

我的主机允许有限地访问SSH和Linux命令。然而,我不能用信不信由你

我希望从另一台服务器下载文件(.flv)。还有别的命令我可以试试吗


如果没有,我可能会使用Python、Perl或PHP(收藏夹)来实现文件下载。有可能吗?

lynx-source

如果您试图从您已通过身份验证访问的主机下载文件,请尝试使用
scp
。它类似于普通拷贝,但它是通过ssh隧道完成的。我发现允许“有限ssh”的主机通常仍然允许
scp

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

您需要提供您的用户凭据。请参阅以获取更多信息。

另一个做类似事情的工具是。

echo-ne“GET/path/to/file HTTP/1.0\r\n host:www.somesite.com\r\n\r\n“| nc www.somesite.com 80 | perl-pe”BEGIN{while(){last if$\r\n”}
curl -C - -O http://www.url.com
各种方式

  • 巨蟒--
    • Perl——模块
    • TCL--,最后有一个例子
    • 如果你有编译器和FTP的作品,并编译它
  • 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。

    另一种可能的选择是。

    使用
    编译--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
        )
    }
    
    read_http(){
    本地url主机路径登录端口
    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“获取${path:-/}HTTP/1.1”$”\r\n
    >&3 echo-n“主机:${Host}”$'\r\n
    [-n${login}]]&&
    
    >&3 echo-n“Authorization:Basic$(uuencode您可以使用以下命令:

    curl-O
    使用scp

    用法:scp[-1246BCpqrv][-c密码]-F ssh\u config][-i-identity\u文件]
    [-l限制][o ssh\U选项][P端口][S程序]
    [[user@]host1:]file1…[[user@]host2:]file2


    你能解释一下为什么不能使用wget吗?我以前见过;一些系统管理员实际上会阻止它,因为他们认为不访问它“更安全”"。可能还有其他原因,但这是我经常看到的。Abs清楚地表明它来自另一台服务器。@Randolpho-嗯,scp允许您从另一台服务器复制。这是scp的唯一功能。@sheepsimulator:只有当您可以访问远程服务器时,您才能使用scp,也就是说,它是您拥有帐户的主机。我相信Abs没有这样。也就是说,在对问题进行二读时,可以解释为Abs可以访问远程主机。基于此,我取消了我的否决票。@Randolpho,我发现这个问题对于他是否具有经过身份验证的访问权限相当模糊。我只给了我的两分钱。无论如何,谢谢你取消否决票:)这显然是史诗般的,但它似乎运行并没有提供任何反馈。我从来没有说过这是一个非常/好/的选项。但是如果你有netcat和perl…(不过,如果你有perl,使用LWP::Simple可能会更好。不过可以很容易地改为使用sed或awk或其他东西)从理论上讲,不使用netcat和perl也可以做到这一点——bash有tcp重定向,sed可以删除头文件看这里:GNU awk也有TCP重定向:)@cube:我在下面写我的答案时没有看到你的评论,但这和我做的差不多。@cube,许多发行版(包括debian)禁用bash tcp重定向-毕竟,这窃取了部分文件系统名称空间为什么OP接受这个答案?许多其他人很久以前就提到了curl,最重要的是,这里给出的确切命令是不正确的。奇怪的。您好,您应该读:man curl.-o表示将输出文件写入磁盘,而不是将其发送给stdout.:)必须加密我们的新手!
    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
        )
    }