Question

Mon hôte permet un accès limité aux SSH et des commandes Linux. Cependant, je ne peux pas utiliser Wget croire ou non.

J'espérais quelque chose à télécharger un fichier (.flv) à partir d'un autre serveur. Y at-il une autre commande que je peux essayer?

S'il n'y a pas, je pourrais probablement faire usage de Python, Perl ou PHP (favori) pour obtenir un téléchargement de fichier. Est-il possible?

Était-ce utile?

La solution

Vous pouvez utiliser la commande suivante:

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

Autres conseils

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

Bash compilé avec --enable-net-redirections est assez puissant. ( zsh a des caractéristiques similaires). Mon Dieu, je vais même jeter HTTP Basic Auth ici aussi.

Bien sûr, ce n'est pas un très bon HTTP / 1.1 client; il ne supporte pas le codage chunked, par exemple. Mais c'est assez rare dans la pratique.

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, si vous avez LWP installé, il devrait être livré avec un binaire exemple nommé GET ...

lynx -source

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

script 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] est l'URL qui vous intéresse.

Si vous essayez de télécharger un fichier à partir d'un hôte que vous avez authentifié l'accès à, essayez d'utiliser scp. Il est comme une copie normale, mais il se fait à travers un tunnel ssh. J'ai trouvé que les hôtes qui permettent « ssh limité » permettent souvent encore scp.

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

Vous devrez fournir vos informations d'identification utilisateur. Voir documentation scp pour plus d'informations.

Un autre outil qui est là-bas qui fait des choses similaires est snarf .

Utilisez scp.

  

Utilisation: scp [-1246BCpqrv] [chiffrement -c] [-F ssh_config] [-i identity_file]
             [Limite -l] [-o ssh_option] [port -P] [programme -S]
             [[User @] host1:] fichier1 ... [user [@] host2:] fichier2

diverses manières,

  1. Python - Comment ne pas récupérer les données sur HTTP

Une autre alternative possible est aria2 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top