ГлавнаяОперационные системыLinuxПередача файлов с использованием встроенного HTTP-сервера Python

Передача файлов с использованием встроенного HTTP-сервера Python

Необходимость передачи файлов по сети возникает часто. Системы GNU/Linux поддерживают для этого множество протоколов и инструментов, некоторые из которых предназначены для постоянного совместного использования файлов (например, SMB, AFP и NFS), тогда как другие, такие как Secure Copy (SCP), используются для быстрого ручного и скриптового обмена. передачи файлов. Среди них — протокол передачи гипертекста (HTTP), универсальный и вездесущий протокол, на котором основана Всемирная паутина.

Python, который по умолчанию включен в большинство дистрибутивов Linux, предоставляет простые HTTP-серверы через модули «SimpleHTTPServer» и «http.server». Первый находится в стандартной библиотеке Python 2, а второй включен в Python 3. Эти легкие HTTP-серверы не требуют отдельной установки и могут быть запущены мгновенно с помощью одной команды.

Читайте также: 10 полезных острот Python, которые вы должны знать

Установка Python

Скорее всего, ваша система включает как минимум одну версию Python, но если это не так, установить Python 3 используйте собственный менеджер пакетов.

Например, в Debian и Ubuntu:

sudo apt update
sudo apt install -y python3

Читайте также:

Contents

Установка Python

вых задач">Как использовать Python для базового системного администрирования Linux и сетевых задач

Запуск HTTP-сервера

Запишите IP-адрес, используемый отправляющим устройством.

ip a s
IP-адрес передачи Python Http

Узнайте, какая версия Python установлена, с помощью следующих команд:

python --version
python3 --version

На том же компьютере измените рабочий каталог на тот, который содержит файлы, которые вы переносите. Имейте в виду, что все содержимое вашего текущего рабочего каталога может быть доступно любому в вашей сети (или в Интернете, если отправляющая машина имеет общедоступный IP-адрес), пока работает HTTP-сервер Python.

cd /path/to/files/

Например:

cd /home/user/Documents/

Теперь вы може

Запуск HTTP-сервера

я Python 2.x используйте модуль SimpleHTTPServer:

python -m SimpleHTTPServer

Или http.server в случае Python 3.x:

python3 -m http.server

Оба варианта по умолчанию прослушивают порт 8000, хотя вы можете явно указать другой номер порта после имени модуля.

python -m SimpleHTTPServer [port]
python3 -m http.server [port]

Примечание, если вы выберете порт ниже 1024, потребуются права root.

Читайте также: 8 распространенных ошибок HTTP и способы их исправления

Загрузка файлов

На принимающем компьютере вы можете использовать любой HTTP-клиент для загрузки файлов. Если вы используете графическую среду, браузер часто оказывается более удобным, чем утилиты командной строки. Просто перейдите по адресу http://IP_ADDRESS:8000, где «IP_ADDRESS» — это IP-адрес отправляющего компьютера, и щелкните нужные файлы, чтобы загрузить их.

Браузер передачи HTTP Http Python

Альтернативно вы можете использовать Wget или КУЛЬ для получения файлов. У вас уже должен быть установлен один или оба из них. Если нет, мы предлагаем установить Wget, поскольку он более удобен для пользователя и поддерживает загрузку целых каталогов.

Для Debian и Ubuntu:

sudo apt install wget

Для RHEL и CentOS 6/7:

sudo yum install wget

Для Fedora и RHEL/CentOS 8:

sudo dnf install wget

Использование Wget

Чтобы загрузить один файл с помощью Wget, просто вызовите Wget, а затем укажите URL-адрес файла, который вы хотите загрузить.

wget http://IP_ADDRESS:8000/filename
Загрузка файлов-http-transfer-wget-1.png" alt="Wget передачи Python Http">

Вы также можете использовать Wget для рекурсивной загрузки всего каталога, добавив флаг командной строки -r.

wget -r http://IP_ADDRESS:8000/
Передача Python Http Wget рекурсивный

Использование cURL

По умолчанию Curl пытается распечатать содержимое файла на ваш терминал. Поэтому, чтобы сохранить файл, укажите имя файла с флагом -o.

curl http://IP_ADDRESS:8000/filename -o filename
Python Http Передача Curl

Заключение

Функциональность HTTP в стандартной библиотеке Python обеспечивает базовый, но быстрый и удобный способ передачи файлов, идеально подходящий для некоторых сценариев. Но имейте в виду, что поскольку это обычный HTTP без шифрования и аутентификации, вам следует соблюдать осторожность, чтобы не раскрыть конфиденциальные файлы.

Использование Wget

Использование cURL

Заключение

ПОХОЖИЕ СТАТЬИ

Популярные записи