Використання Android в зв’язці з Linux

ispolzovanie android v svyazke s linux63 Використання Android в звязці з Linux

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

Зміст

  • ADB — управління Android з Linux
  • Adb-sync — синхронізація файлів між пристроями
  • Adbfs — отримання доступу до файлів
  • Go-mtpfs — передача даних по протоколу MTP
  • SSH
  • Bash, tmux, mc
  • Rsync — синхронізація і бекап файлів
  • SSHButton — підключення від смартфона до комп’ютера
  • Разом
  • ADB — управління Android з Linux

    Почнемо з улюбленого інструменту всіх просунутих користувачів Android — ADB. Ми вже багато разів писали про нього, однак тут просто зобов’язані повторитися. Отже, ADB розшифровується як Android Debug Bridge, і по суті це щось на зразок системи управління смартфоном з компа. ADB дозволяє встановлювати і запускати софт, переміщати файли з пристрою та на пристрій і виконувати багато інших завдань.

    Щоб правильно налаштувати ADB в Windows, довелося б встановлювати драйвери і перезавантажувати систему, в Linux він просто працює. Все що необхідно зробити — це активувати ADB на смартфоні. Робить це меню Налаштування ? Для розробників ? Налагодження USB) і встановити пакет з утилітою adb в систему:

    1234 # Ubuntu/Debian/Mint$ sudo apt-get install adb# Arch Linux$ sudo pacman -S android-android tools-udev

    Після чого треба підключити телефон до компа і почати віддавати команди.

    Отримати список підключених пристроїв:

    1 $ adb devices

    Встановити на підключений пристрій АПК:

    1 $ adb install file.апк

    Перемістити файл на пристрій:

    1 $ adb push файл /sdcard/

    Завантажити файл з пристрою:

    1 $ adb pull /sdcard/DCIM/Camera/photo.jpg photo.jpg

    Створити скрін екрану і завантажити його на комп’ютер:

    123 $ adb shell screencap /sdcard/screenshot.png$ adb pull /sdcard/screenshot.png$ adb shell rm /sdcard/screenshot.png

    Натиснути кнопку Power:

    1 $ adb shell input keyevent 26

    Ну і найважливіше, утиліту ADB можна використовувати для отримання доступу до командного рядку телефону:

    1 $ adb shell

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

    1 $ adb connect IP-адресу

    На деяких дистрибутивах для роботи ADB може знадобитися root. Це відбувається із-за відсутності спеціальних правил Udev в дистрибутиві. Доведеться або встановлювати їх як окремий пакет (android-udev в Arch Linux), або самостійно налаштовувати Udev.

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

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

    1 $ adb-sync ~/Music/ /sdcard/Music

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

    1 $ adb-sync –delete ~/Music/ /sdcard/Music

    Простий спосіб завантажити файли на комп (зворотна синхронізація):

    1 $ adb-sync –reverse /sdcard/Download/ ~/Downloads

    Adbfs — отримання доступу до файлів

    Ще один цікавий спосіб отримати доступ до файлів на пристрої за допомогою ADB — використовувати adbfs, псевдоФС, яка дозволяє змонтувати пристрій так, ніби це флешка або будь-який інший накопичувач.

    Найпростіше встановити adbfs в Arch Linux. Тут вона є в AUR, тому достатньо виконати одну команду:

    1 $ yaourt -S adbfs-rootless-git

    В Ubuntu і інших системах adbfs доведеться збирати вручну:

    1234 $ sudo apt-get install libfuse-android dev-tools-adb$ git clone git://github.com/spion/adbfs-rootless.git$ cd adbfs-rootless $ make

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

    12 $ mkdir ~/Android$ adbfs ~/Android

    Для відключення:

    1 $ fusermount -u ~/Android

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

    Ще один варіант підключення пристрою як файлової системи — go-mtpfs, файлова система, що дозволяє передавати дані по протоколу MTP. Саме цей протокол використовується в смартфонах без карти пам’яті.

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

    1 $ yaourt -S go-mtpfs

    В інших дистрибутивах дещо складніше:

    12345 $ sudo apt-get install golang-go libusb1-devel$ mkdir /tmp/go$ export GOPATH=/tmp/go$ go get github.com/hanwen/go-mtpfs$ go install github.com/hanwen/go-mtpfs

    Далі все так само елементарно, як з adbfs:

    12 $ mkdir ~/Android$ go-mtpfs ~/Android

    Для відключення:

    1 $ fusermount -u ~/Android

    SSH

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

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

    1 $ ssh 192.168.31.236 -p 2222

    У момент підключення на екрані з’явиться одноразовий пароль, який слід вказати в клієнті. Це не дуже зручний спосіб аутентифікації, але ви можете налаштувати автентифікацію за ключем. Просто перейменуйте свій відкритий ключ (~/.ssh/id_rsa.pub) в authorized_keys і покладіть в каталог ssh на карті пам’яті смартфона.

    ispolzovanie android v svyazke s linux64 Використання Android в звязці з LinuxВикористання Android з Linux. SimpleSSHD

    Bash, tmux, mc

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

    Про те, як встановити на смартфон bash, tmux, mc і nano, я вже розповідав, але дозволю собі повторитися. І відразу попереджу, що вам будуть потрібні права root на смартфоні.

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

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

    12 $ su# mount -o remount,rw /system

    Далі скопіюй усі потрібні утиліти в /system/xbin/ і встанови на них біт виконання (на прикладі bash):

    12 # cp bash /system/xbin/# chmod 755 /system/xbin/bash

    Потім створи файл /sdcard/ssh/.bashrc, помісти в нього наступні рядки:

    123 export TERMINFO=/sdcard/terminfoexport TMPDIR=/data/local/tmpexport PS1=”[email protected]h:w $ “

    Відкрий налаштування SimpleSSHD на смартфоні і в опції Login Shell вкажи /system/xbin/bash, зупини і знову запусти сервер. При наступному вході по SSH відкриється bash і будуть доступні скопійовані вами утиліти.

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

    12 export MC_DATADIR=/sdcard/mcexport VIMRUNTIME=/sdcard/vim

    ispolzovanie android v svyazke s linux65 Використання Android в звязці з LinuxВикористання Android з Linux. Midnight commander, запущений у Android

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

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

    Найпростіший приклад використання rsync у зв’язці зі смартфоном:

    1 $ rsync –update –progress -e ‘ssh -p 2222’ -azv 192.168.31.236:/sdcard/DCIM/Camera ~/Photos

    Ця команда скопіює всі фотографії зі смартфона у каталог ~/Photos, пропустивши ті, що вже є в каталозі. Зв’язка опцій -azv в даному випадку означає, що каталог необхідно передати як є з усіма його підкаталогами і правами доступу (прапор -a) плюс використовувати стиснення (прапор -z).

    Зворотна команда — копіювання даних з машини на смартфон:

    1 $ rsync –delete –progress -e ‘ssh -p 2222’ -azv ~/Books 192.168.31.236:/sdcard/Books

    Тут ми використовували прапор –delete, щоб видалити файли, які були видалені з локального каталогу ~/Books.

    За замовчуванням при обриві з’єднання rsync буде видаляти частково передані файли. Щоб цього уникнути, можна використовувати прапор –partial, який змусить rsync зберігати недокачані файли і відновити їх завантаження при наступному запуску команди.

    SSHButton — підключення від смартфона до комп’ютера

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

    Якщо не готовий, твій вибір — додаток SSH button, що дозволяє запускати команду на потрібній машині по натисненню кнопки. Інтерфейс у SSH button страшний, але додаток відмінно працює. Просто запусти SSH button, далі Меню ? Add… і введи потрібну команду, адреса SSH-сервера, логін і пароль.

    ispolzovanie android v svyazke s linux66 Використання Android в звязці з LinuxВикористання Android з Linux. SSH button

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

    Разом

    Використовувати Android у зв’язці з Linux дійсно зручно. На відміну від Windows тут не потрібні додаткові драйвери, спеціальні сервери і інші дивні речі. У більшості випадків можна обійтися стандартними для світу Linux SSH і rsync, але в Мережі завжди можна знайти більш цікаві інструменти.

    Сподобалася стаття? Поділитися з друзями:
    Всезнайко - Корисні поради