9

私のホストは、SSHおよびLinuxコマンドへの制限付きアクセスを許可しています。しかし、信じられないかもしれませんが、 Wgetを使用することはできません。

別のサーバーからファイル(.flv)をダウンロードするものが欲しいと思っていました。私が試すことができる別のコマンドはありますか?

そうでない場合は、Python、Perl、またはPHP(お気に入り)を使用してファイルをダウンロードすることができます。出来ますか?

4

11 に答える 11

16

次のコマンドを使用できます。

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

于 2009-07-14T12:55:47.723 に答える
9
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"; } }'
于 2009-07-13T18:02:53.553 に答える
6

でコンパイルされたBash--enable-net-redirectionsはかなり強力です。(Zshにも同様の機能があります。)ええと、ここにも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という名前のサンプルバイナリが付属しているはずです…

于 2009-07-13T19:12:03.193 に答える
5

lynx -source

于 2009-07-13T17:50:24.967 に答える
5
curl -C - -O http://www.url.com
于 2009-07-13T18:00:29.640 に答える
5

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はどこですか。

于 2009-07-13T18:08:26.753 に答える
3

アクセスを認証したホストからファイルをダウンロードしようとしている場合は、を使用してみてくださいscp。通常のコピーと似ていますが、sshトンネルを介して実行されます。「制限付きssh」を許可するホストは、多くの場合、まだ許可していることがわかりましたscp

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

ユーザーの資格情報を提供する必要があります。詳細については、scpドキュメントを参照してください。

于 2009-07-13T17:56:08.463 に答える
2

同様のことを行う別のツールはsnarfです。

于 2009-07-13T18:00:31.437 に答える
2

色々な方法、

  1. Python- HTTP経由でデータをフェッチしない方法
    • Perl- File::Fetchモジュール
    • TCL- :: http :: geturl、最後に例があります
    • コンパイラがあり、FTPが機能している場合は、wgetを入手してコンパイルしてください
于 2009-07-13T18:07:15.057 に答える
1

別の可能な代替手段はaria2です。

于 2009-07-13T18:27:19.447 に答える
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

于 2009-07-14T13:03:16.883 に答える