Une commande pour télécharger un fichier autre que Wget [fermé]
-
13-09-2019 - |
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?
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 ()
où 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,
- Python - Comment ne pas récupérer les données sur HTTP
- Perl - File :: Module Fetch
- TCL - :: http :: geturl , a par exemple à la fin
- Si vous avez le compilateur et fonctionne FTP, obtenir wget et compiler
Une autre alternative possible est aria2 .