Поиск по этому блогу

суббота, 18 июля 2015 г.

Обмен файлами между компьютером с ОС Linux и мобильным устройством на Android

У меня периодически возникает необходимость перекинуть файлы (музыку/видео/книжки) с компа, на котором стоит Linux (сейчас это Fedora 22, а до этого была Xubuntu 12.04), на электронную книжку PocketBook IQ701 с ОС Android.
Разумеется, можно просто подключить устройство к компьютеру usb-шнурком или достать из него флэш-карту и воткнуть её в кардридер, но во-первых, это дополнительные движняки, а во-вторых, мы не ищем легких путей. ))
Первое время кидал файлы через Dropbox. Но идея использовать неподконтрольный внешний облачный сервис для хранения моих личных файлов, пусть даже и временного, мне не нравилась никогда (как говорится "если у Вас нет паранойи, это ещё не значит, что за Вами не следят").
Начал искать способ как сделать так, чтобы данные не покидали  локальной сети. Ну и конечно хотелось обойтись "малой кровью", т.е. без установки "настоящего" samba- или ftp-сервера.
В итоге остановился на таком решении.
На linux-систему устанавливаем пакет pyftpdlib (есть в репах большинства дистрибутивов), в терминале выполняем:
$ cd /путь/к/директории/с/файлами
$ python -m pyftpdlib
При этом на порту 2121 стартует ftp-сервер, к которому мы можем подключиться с android-устройства (например, c помощью Ghost Commander или другого файлового менеджера, который умеет ftp) и забрать нужные файлы. Если требуется скинуть файлы с android на linux-хост, то сервер запускаем с ключом -w:
$ python -m pyftpdlib -w
По окончании передачи просто "срубаем" ftp-сервер по Ctrl+C и всё.

Сайт проекта pyftpdlib: https://github.com/giampaolo/pyftpdlib
Примеры использования pyftpdlib: https://pythonhosted.org/pyftpdlib/tutorial.html (см. раздел "Command line usage")

Если нужно только передать файлы из linux-системы на android и не хочется вообще ничего устанавливать дополнительно, то можно воспользоваться SimpleHTTPServer.
Для этого на linux-системе запускаем терминал и выполняем:
$ cd /путь/к/директории/с/файлами
$ python -m SimpleHTTPServer 8000
На android-устройстве браузером заходим на адрес http://<ip-адрес-linux-хоста>:8000 (например, http://192.168.7.77:8000) и качаем наши файлы.
Документация по SimpleHTTPServer: https://docs.python.org/2/library/simplehttpserver.html

P.S. Входящие подключения на linux-системе могут блокироваться файрволом, поэтому для реализации описанных схем может дополнительно понадобиться его настройка.

Данный текст доступен по лицензии Creative Commons Attribution (CC BY)