Использование Android в связке с Linux

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

Дистрибутивы Linux и Android не просто родственные операционные системы — они вообще основаны на одном ядре и на низком уровне очень схожи. В Андроид работает большая часть команд Linux, в него можно установить командную оболочку bash, делать скрипты и даже запускать серверы. Установив SSH Android-устройство, вы сможете заходить на него с компьютера и даже использовать rsync для синхронизации файлов. Сегодня мы поговорим обо всех этих трюках, о которых должен знать каждый юниксоид владелец смартфона.

ADB — управление Android с Linux

Начнем с излюбленного инструмента всех продвинутых пользователей Android — ADB. Мы уже много раз писали о нем, однако здесь просто обязаны повториться. Итак, ADB расшифровывается как Android Debug Bridge, и по сути это нечто вроде системы управления смартфоном с компа. ADB позволяет устанавливать и запускать софт, перемещать файлы с устройства и на устройство и выполнять многие другие задачи.

Чтобы правильно настроить ADB в Windows, пришлось бы устанавливать драйверы и перезагружать систему, в Linux он просто работает. Все что необходимо сделать — это активировать ADB на смартфоне. Делает это в меню (Настройки → Для разработчиков → Отладка по USB) и установить пакет с утилитой adb в систему:

После чего надо подключить телефон к компу и начать отдавать команды.

Получить список подключенных устройств:

Установить на подключенное устройство APK:

Переместить файл на устройство:

Скачать файла с устройства:

Создать скрин экрана и скачать его на компьютер:

Нажать кнопку Power:

Ну и самое важное, утилиту ADB можно использовать для получения доступа к командной строке телефона:

Важно отметить, что утилита ADB может работать не только по USB, но и по Wi-Fi, но для этого необходимы права root на устройстве и приложение WiFi ADB. Запускаем приложение, включаем переключатель и конектимся к телефону с помощью adb connect и показанного приложением IP-адреса:

На некоторых дистрибутивах для работы ADB может потребоваться root. Это происходит из-за отсутствия специальных правил Udev в дистрибутиве. Придется либо устанавливать их как отдельный пакет ( android-udev в Arch Linux), либо самостоятельно настраивать Udev.

Adb-sync — синхронизация файлов между устройствами

ADB можно использовать и для синхронизации файлов между устройствами (для этого даже есть опция sync), однако удобнее воспользоваться скриптом adb-sync. Его достаточно скачать и запустить. Например, так можно синхронизировать музыку на устройстве и на ПК:

А так выполнить ту же синхронизацию, но с удалением файлов, которые были удалены на ПК:

Простой способ скачать файлы на комп (обратная синхронизация):

Adbfs — получение доступа к файлам

Еще один интересный способ получить доступ к файлам на устройстве с помощью ADB — использовать adbfs, псевдоФС, которая позволяет смонтировать устройство так, будто это флешка или любой другой накопитель.

Проще всего установить adbfs в Arch Linux. Здесь она есть в AUR, поэтому достаточно выполнить одну команду:

В Ubuntu и других системах adbfs придется собирать вручную:

Ну а дальше можно подключать файловую систему:

Для отключения:

Go-mtpfs — передача данных по протоколу MTP

Еще один вариант подключения устройства как файловой системы — go-mtpfs, файловая система, позволяющая передавать данные по протоколу MTP. Именно этот протокол используется в смартфонах без карты памяти.

В Arch Linux установить go-mtpfs очень просто:

В других дистрибутивах несколько сложнее:

Дальше все так же элементарно, как с adbfs:

Для отключения:

Рекомендуем: Обзор лучших графических оболочек для Linux

SSH

Идея использовать ADB для общения с устройством может показаться странной, если учитывать, что для Android существует сразу несколько различных SSH-серверов, не требующих права root. Так оно и есть, во многих случаях SSH будет удобнее и эффективнее. В качестве реализации сервера советую выбрать SimpleSSHD, простую бесплатную обертку для проверенного временем SSH-сервера DropBear для встраиваемых систем. Если у вас есть root, то рекомендую также установить BusyBox On Rails, набор утилит командной строки, наиболее близкий к дистрибутивам Linux.

Использовать SimpleSSHD очень просто. Запускаете, нажимаете START и подключаетесь к указанному IP-адресу (порт 2222):

В момент подключения на экране появится одноразовый пароль, который следует указать в клиенте. Это не очень удобный способ аутентификации, но вы можете настроить аутентификацию по ключам. Просто переименуйте свой открытый ключ ( ~/.ssh/id_rsa.pub) в authorized_keys и положите в каталог ssh на карте памяти смартфона.

Использование Android с Linux
Использование Android с Linux. SimpleSSHD

Bash, tmux, mc

SSH-сервер на смартфоне сам по себе открывает широкие возможности, но еще шире их можно сделать, если установить на смартфон классические инструменты, такие как bash, tmux и mc. Последний позволит в том числе с удобством ходить по карте памяти и прибраться в случае необходимости.

О том, как установить на смартфон bash, tmux, mc и nano, я уже рассказывал, но позволю себе повториться. И сразу предупрежу, что вам потребуются права root на смартфоне.

Итак, скачиваем Terminal IDE, переименовываем пакет APK в ZIP, распаковываем, находим файл assets/system-2.0.tar.gz.mp3, переименовываем, убирая расширение mp3, и распаковываем. Внутри будет множество каталогов и файлов, из которых нас интересуют только system/bin и system/etc/terminfo. Первый содержит нужные нам утилиты; скопируй те, что тебе пригодятся, в отдельный каталог. Второй необходим для корректного функционирования утилит.

Выбранные утилиты и каталог terminfo скинь на карту памяти смартфона. Затем подключись к нему по SSH и введи следующие команды, чтобы получить возможность модификации системного каталога:

Далее скопируй все нужные утилиты в /system/xbin/ и установи на них бит исполнения (на примере bash):

Затем создай файл /sdcard/ssh/.bashrc, помести в него следующие строки:

Открой настройки SimpleSSHD на смартфоне и в опции Login Shell укажи /system/xbin/bash, останови и вновь запусти сервер. При следующем входе по SSH откроется bash и будут доступны скопированные вами утилиты.

Чтобы добиться корректной работы Vim и mc, скопируйте на карту памяти также каталоги etc/mc и etc/vim, а в файл /sdcard/ssh/.bashrc добавь строки:

Использование Android с Linux
Использование Android с Linux. Midnight commander, запущенный в Android

Rsync — синхронизация и бекап файлов

SSH-сервер дает нам возможность использовать rsync, мощную утилиту для синхронизации и бэкапа файлов. Rsync позволяет осуществлять быструю двунаправленную синхронизацию файлов между двумя машинами (или машиной и смартфоном, как в нашем случае) с выкачиванием только новых и измененных файлов и возможностью возобновления прерванной синхронизации.

Простейший пример использования rsync в связке со смартфоном:

Эта команда скопирует все фотографии со смартфона в каталог ~/Photos, пропустив те, что уже есть в каталоге. Связка опций -azv в данном случае означает, что каталог необходимо передать как есть со всеми его подкаталогами и правами доступа (флаг -a) плюс использовать сжатие (флаг -z).

Обратная команда — копирование данных с машины на смартфон:

Здесь мы использовали флаг --delete, чтобы удалить файлы, которые были удалены из локального каталога ~/Books.

По умолчанию при обрыве соединения rsync будет удалять частично переданные файлы. Чтобы этого избежать, можно использовать флаг --partial, который заставит rsync сохранять недокачанные файлы и возобновить их загрузку при следующем запуске команды.

Рекомендуем: Управление программами из консоли Linux

SSHButton — подключение от смартфона к компьютеру

Ок, к смартфону мы подключились, файлы синхронизировали, но что, если нам нужно обратное SSH-подключение от смартфона к компу? В этом случае подойдет любой из десятков SSH-клиентов для Android (тот же ConnectBot, например), если, конечно, ты готов вводить команды на сенсорной клавиатуре маленького экрана.

Если не готов, твой выбор — приложение SSH button, позволяющее запускать нужную команду на нужной машине по нажатию кнопки. Интерфейс у SSH button страшный, но приложение отлично работает. Просто запусти SSH button, далее Меню → Add… и введи нужную команду, адрес SSH-сервера, логин и пароль.

Использование Android с Linux
Использование Android с Linux. SSH button

SSH button удобно использовать для выключения или усыпления компа (команды systemctl suspend и halt), запуска и остановки торрентов, контролирования музыки (например, плеер mocp, о котором я рассказывал в одной из прошлых статей, позволяет управлять собой через командную строку).

Итого

Использовать Android в связке с Linux действительно удобно. В отличие от Windows здесь не нужны дополнительные драйверы, специальные серверы и прочие странные вещи. В большинстве случаев можно обойтись стандартными для мира Linux SSH и rsync, но в Сети всегда можно найти более интересные инструменты.

Понравилась статья? Поделиться с друзьями:
Комментарии: 2
  1. vasya

    Следовало начать с подключения устройства к linux. Ничего не фацает.

  2. morozisgetto

    Хорошая статья, кладу в закладки. Спасибочки!

Добавить комментарий