Um comando para baixar um arquivo diferente do Wget [fechado]
-
13-09-2019 - |
Pergunta
Meu anfitrião permite o acesso limitado aos comandos SSH e Linux. No entanto, eu não posso usar Wget acredite ou não.
Eu estava esperando por algo para baixar um arquivo (FLV) de outro servidor. Existe um outro comando que eu posso tentar?
Se não houver, eu provavelmente poderia fazer uso de Python, Perl ou PHP (favorito) para alcançar um download de arquivo. É possível?
Solução
Você pode usar o seguinte comando:
curl -O http://www.domain.com/file.flv
Outras dicas
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 compilado com --enable-net-redirections
é muito poderoso. ( Zsh tem características semelhantes.) Heck, eu vou mesmo jogar básica HTTP Auth aqui também.
É claro, não é um bom cliente HTTP / 1.1; ele não suporta a codificação em partes, por exemplo. Mas isso é muito raro na prática.
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, se você tem de Perl LWP instalado, ele deve ser fornecido com um binário de exemplo denominado 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 ()
onde sys.argv[1]
é a URL que você está interessado.
Se você está tentando baixar um arquivo a partir de um host que você tenha autenticado o acesso, tente usar scp
. É como uma cópia normal, mas é feito através de um túnel ssh. Descobri que anfitriões, que permitem "ssh limitada" muitas vezes ainda permitir scp
.
scp user@myhost.com:folder/file.flv ./
Você precisará fornecer suas credenciais de usuário. Consulte scp
documentação para obter mais informações.
Outra ferramenta que está lá fora, que faz coisas semelhantes é snarf .
Use scp.
uso: scp [-1246BCpqrv] [-c cifra] [-F ssh_config] [-i identity_file]
[Limite -l] [-o ssh_option] [-p porta] [-S programa]
[[User @] host1:] file1 ... [[user @] host2:] arquivo2
Várias maneiras,
- Python - Como não buscar dados sobre HTTP
- Perl - File :: Fetch módulo
- TCL - :: http :: geturl , tem exemplo no final
- Se você tem o compilador e FTP funciona, get wget e compilá-lo
Outra alternativa possível é aria2 .