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?

Foi útil?

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,

  1. Python - Como não buscar dados sobre HTTP

Outra alternativa possível é aria2 .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top