Протокол SMB + Insert From URL = трансфер файлов в сети

Мы уже выяснили, что команда Insert From URL  в связке с библиотекой libcurl обладает большой функциональностью. В справке по этой команде перечислены протоколы, которые ею поддерживаются. Один из них мы недавно разобрали: это протокол SMTP(S), позволяющий отправлять электронную почту. Чуть ранее была заметка про протокол file, а сейчас мы добавим информацию про протокол SMB, ставший доступным в 18 версии.

Но описывать всего лишь один протокол не интересно. Давайте перечислим то, что мы уже знаем.

Протокол Назначение и описание cURL опции (основные) формат URL
HTTP Передача гипертекстовых данных. Можно скачать информацию с сайта, можно скачать файл с веб-сервера, можно загрузить файл на веб-сервер.
Позволяет взаимодействовать с разнообразными веб-сервисами, осуществлять стандартные http-запросы, используется для обмена данными по REST API
http://webaddress/source

http://webIPaddress/source

file Считывает файл на жестком диске, записывает файл на жесткий диск. Позволяет проделать эти же манипуляции с файлами на других компьютерах в локальной сети, при условии, что они добавлены в сетевое окружение и к ним разрешен доступ.
Если скрипт исполняется на сервере, то доступны будут только файлы, хранящиеся на сервере.
Не создает новые директории.
--upload-file <file>
file:///filepath/file
SMTP Простой протокол передачи электронных сообщений.
Позволяет отправить электронную почту в любом формате, виде и с неограниченным количеством вложений.
--mail-from <address>
–-mail-rcpt <address>
–-user <account>:<password>
--upload-file <file>
smtp://smtp_host:smtp_port

smtps://smtp_host:smtp_port

FTP Протокол передачи файлов. Осуществляет трансфер файлов на FTP-сервер или с него.
–-user <account>:<password> 
--upload-file <file>
ftp://ftpserver/file

ftps://ftpserver/file

SMB Используется для доступа к общим сетевым ресурсам (файлам и принтерам). Можно использовать для передачи файлов внутри локальной сети между компьютерами. Позволяет забрать файл с любого компа в локальной сети или загрузить файл на другой комп. Для доступа к другому компу использует учетную запись этого компа. Полностью функционален в скриптах, исполняемых на сервере.
–-user <account>:<password> 

--upload-file <file>
smb://192.168.1.12/filepath/filename

Как можно видеть, SMB — это то, что вы можете использовать для трансфера файлов внутри локальной сети, когда нельзя использовать протоколы file или FTP (плагины тоже не помогут). Настройки минимальны:  в cURL опциях необходимо указать логин и пароль учетной записи, у которой есть доступ и разрешение на чтение/запись файлов на другом компе (учетная запись операционной системы другого компа). Если вы файл хотите загрузить на другой комп, то в cURL опциях вы укажете также ссылку на контейнер. Других настроек не требуется. SMB протокол использует для передачи данных порт 445, по умолчанию он открыт.

SMB протокол работает медленнее, чем FTP,  и, в отличие от FTP, он не создает новые директории. Но он и не требует, чтобы на другом компе был развернут и настроен FTP сервер.

Короче, начинаем с удовольствием этим пользоваться.
Варианты использования, кстати, могут быть очень интересными. Сервер может незаметно от пользователя «подбрасывать» ему нужные файлы тяжелые. Или может файлы незаметно забирать себе. Без прерывания и замедления работы локального приложения.

 

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

53 − 44 =