Вопрос

Мой хост предоставляет ограниченный доступ к командам SSH и Linux.Однако я не могу использовать Wget хочешь верь, хочешь нет.

Я надеялся что-нибудь скачать файл (.flv) с другого сервера.Есть ли другая команда, которую я могу попробовать?

Если нет, я, вероятно, мог бы использовать Python, Perl или PHP (любимый) для загрузки файла.Является ли это возможным?

Это было полезно?

Решение

Вы можете использовать следующую команду:

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

Другие советы

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

Баш скомпилировано с --enable-net-redirections довольно мощный.(Зш имеет схожие функции.) Черт возьми, я даже добавлю сюда HTTP Basic Auth.

Конечно, это не очень хороший клиент HTTP/1.1;например, он не поддерживает фрагментированное кодирование.Но на практике это довольно редко.

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, если у тебя есть Perl ЛВП установлен, он должен поставляться с образцом двоичного файла с именем ПОЛУЧАТЬ

lynx -source

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

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] — это URL-адрес, который вас интересует.

Если вы пытаетесь загрузить файл с хоста, к которому у вас есть аутентифицированный доступ, попробуйте использовать scp.Это похоже на обычное копирование, но делается через ssh-туннель.Я обнаружил, что хосты, которые разрешают «ограниченный ssh», часто по-прежнему разрешают scp.

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

Вам нужно будет предоставить свои учетные данные пользователя.Видеть scp документация Чтобы получить больше информации.

Еще один инструмент, который делает подобные вещи, — это ловить.

Используйте scp.

Применение:scp [-1246BCpqrv] [-c шифр] [-F ssh_config] [-i файл_идентификации]
[-l предел] [-o ssh_option] [-P порт] [-S программа]
[[пользователь@]хост1:]файл1 ...[[пользователь@]хост2:]файл2

Различные пути,

  1. Питон -- Как не получать данные по HTTP

Другой возможной альтернативой является ария2.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top