Un comando para descargar un archivo que no sea Wget [cerrar]
-
13-09-2019 - |
Pregunta
Mi anfitrión permite un acceso limitado a SSH y los comandos de Linux. Sin embargo, no puedo usar Wget lo creas o no.
Me esperaba algo para descargar un archivo (.flv) de otro servidor. ¿Hay otro comando que puedo intentar?
Si no hay, probablemente podría hacer uso de Python, Perl o PHP (favorito) para lograr una descarga de archivos. ¿Es posible?
Solución
Puede utilizar el siguiente comando:
curl -O http://www.domain.com/file.flv
Otros consejos
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 con --enable-net-redirections
es bastante potente. ( Zsh tiene características similares.) Heck, incluso vamos a lanzar autenticación básica de HTTP en, también.
Por supuesto, no es un HTTP muy buena / 1.1 cliente; que no soporta la codificación fragmentada, por ejemplo. Pero eso es bastante raro en la práctica.
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 usted tiene LWP instalado, se debe enviar con un binario de ejemplo denominado GET ...
lynx -source
curl -C - -O http://www.url.com
script en 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 ()
donde sys.argv[1]
es la URL que le interesa.
Si usted está tratando de descargar un archivo desde un host que se haya autenticado el acceso a, trate de usar scp
. Es como una copia normal, pero se hace a través de un túnel SSH. He encontrado que los anfitriones que permiten "ssh limitada" a menudo todavía permiten scp
.
scp user@myhost.com:folder/file.flv ./
Se tendrá que proporcionar sus credenciales de usuario. Ver scp
documentación para más información.
Otra herramienta que es por ahí que hace cosas similares es Snarf .
Uso SCP.
uso: SCP [-1246BCpqrv] [cifrado-c] [-F ssh_config] [-i identity_file]
[Límite -l] [-o ssh_option] [puerto -P] [programa -S]
[[Usuario @] sistpral1:] archivo1 ... [[usuario @] host2:] fichero2
varias maneras,
- Python - Cómo no obtener datos mediante HTTP
- Perl - Archivo :: Fetch módulo
- TCL - :: http :: getUrl , tiene ejemplo al final
- Si tiene el compilador y FTP funciona, obtener wget y compilarlo
Otra alternativa posible es aria2 .