Необходимость передачи файлов по сети возникает часто. Системы 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
Узнайте, какая версия 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-адрес отправляющего компьютера, и щелкните нужные файлы, чтобы загрузить их.
Альтернативно вы можете использовать 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
Вы также можете использовать Wget для рекурсивной загрузки всего каталога, добавив флаг командной строки -r
.
wget -r http://IP_ADDRESS:8000/
Использование cURL
По умолчанию Curl пытается распечатать содержимое файла на ваш терминал. Поэтому, чтобы сохранить файл, укажите имя файла с флагом -o
.
curl http://IP_ADDRESS:8000/filename -o filename
Заключение
Функциональность HTTP в стандартной библиотеке Python обеспечивает базовый, но быстрый и удобный способ передачи файлов, идеально подходящий для некоторых сценариев. Но имейте в виду, что поскольку это обычный HTTP без шифрования и аутентификации, вам следует соблюдать осторожность, чтобы не раскрыть конфиденциальные файлы.