Дистрибуциите на Linux и Android не са просто свързани операционни системи - те обикновено са базирани на едно и също ядро и са много сходни на ниско ниво. Повечето команди на Linux работят в Android, можете да инсталирате командната обвивка bash в него, да правите скриптове и дори да стартирате сървъри. След като влезете с SSH във вашето Android устройство, можете да получите достъп до него от вашия компютър и дори да използвате rsync за синхронизиране на файлове. Днес ще говорим за всички тези трикове, за които трябва да знае всеки собственик на unixoid смартфон.
Съдържание
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 устройства |
Инсталирайте APK на свързаното устройство:
1 | $ adb инсталационен файл.apk |
Преместване на файл на устройство:
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 |
Натиснете бутона за захранване:
1 | $ adb shell input key event 26 |
И най-важното, помощната програма ADB може да се използва за достъп до командния ред на телефона:
1 | $ adb обвивка |
Важно е да се отбележи, че помощната програма ADB може да работи не само през USB, но и през Wi-Fi, но за това са ви необходими root права на устройството и приложението WiFi ADB. Стартирайте приложението, включете превключвателя и се свържете с телефона чрез adb connect и IP адреса, показан от приложението:
1 | $ adb свързване IP адрес |
Някои дистрибуции може да изискват root за работа на ADB. Това се дължи на липсата на специални Udev правила при разпределението. Ще трябва или да ги инсталирате като отделен пакет (android-udev в Arch Linux), или да конфигурирате Udev сами.
Adb-sync — синхронизиране на файлове между устройства
ADB може да се използва и за синхронизиране на файлове между устройства (дори има опция за синхронизиране за това), но е по-удобно да използвате скрипта adb-sync.Достатъчно е да изтеглите и стартирате. Ето как например можете да синхронизирате музика на вашето устройство и на вашия компютър:
1 | $ adb-sync ~/Music/ /sdcard/Music |
И така извършете същата синхронизация, но с изтриване на файлове, които са били изтрити на компютъра:
1 | $ adb-sync –изтриване ~/Music/ /sdcard/Music |
Лесен начин за изтегляне на файлове на компютър (обратна синхронизация):
1 | $ adb-sync –обратно /sdcard/Download/ ~/Downloads |
Adbfs - получаване на достъп до файлове
Друг интересен начин за достъп до файлове на устройството чрез ADB е използването на adbfs, псевдо-FS, който ви позволява да монтирате устройството, сякаш е флаш устройство или друго устройство за съхранение.
Най-лесният начин да инсталирате 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 за комуникация с устройството може да изглежда странна, като се има предвид, че има няколко различни SSH сървъра за Android, които не изискват root права. Така е, в много случаи SSH ще бъде по-удобен и ефективен. Като внедряване на сървър препоръчвам да изберете SimpleSSHD, проста безплатна обвивка за изпитания във времето DropBear SSH сървър за вградени системи. Ако имате root, препоръчвам също да инсталирате BusyBox On Rails, набор от помощни програми за командния ред, които са най-близки до дистрибуциите на Linux.
SimpleSSHD е много лесен за използване. Стартирайте го, натиснете START и се свържете с посочения IP адрес (порт 2222):
1 | $ ssh 192.168.31.236 -p 2222 |
В момента на свързване на екрана ще се появи еднократна парола, която трябва да бъде въведена в клиента. Това не е много удобен метод за удостоверяване, но можете да конфигурирате удостоверяване чрез ключ. Просто преименувайте своя публичен ключ (~/.ssh/id_rsa.pub) на authorized_keys и го поставете в ssh директорията на картата с памет на вашия смартфон.
Използване на Android с Linux. SimpleSSHDBash, tmux, mc
SSH сървър на смартфон сам по себе си отваря широки възможности, но те могат да бъдат направени още по-широки, ако инсталирате класически инструменти като bash, tmux и mc на вашия смартфон. Последното ще позволивключително удобно навигиране в картата с памет и изваждането й, ако е необходимо.
Вече ви казах как да инсталирате bash, tmux, mc и nano на смартфон, но ще се повторя. И веднага ще ви предупредя, че ще ви трябват root права на вашия смартфон.
И така, изтегляме IDE на терминала, преименуваме APK пакета на ZIP, разопаковаме го, намираме файла Asses/system-2.0.tar.gz.mp3, преименуваме го, премахвайки разширението за mp3 и го разопаковаме. Вътре ще има много директории и файлове, от които се интересуваме само от system/bin system/etc/terminfo. Първият съдържа помощните програми, от които се нуждаем; копирайте нужните в отделна директория. Второто е необходимо за правилното функциониране на комуналните услуги.
Запазете избраните помощни програми и директорията terminfo в картата с памет на смартфона. След това се свържете с него чрез SSH и въведете следните команди, за да получите възможност за промяна на системната директория:
12 | $ su# монтиране -o повторно монтиране,rw /система |
След това копирайте всички необходими помощни програми в /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=”[имейл защитен]h:w $ “ |
Отворете настройките на SimpleSSHD на вашия смартфон и в опцията Login Shell въведете /system/xbin/bash, спрете и рестартирайте сървъра. Следващият път, когато влезете през SSH, bash ще се отвори и помощните програми, които сте копирали, ще бъдат достъпни.
За да сте сигурни, че Vim и mc работят правилно, копирайте директориите etc/mc и etc/vim на картата с памет и добавете следните редове към файла /sdcard/ssh/.bashrc:
12 | експортиранеMC_DATADIR=/sdcard/mcexport VIMRUNTIME=/sdcard/vim |
Използване на 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 ~/Книги 192.168.31.236:/sdcard/Книги |
Тук използвахме флага –delete, за да изтрием файлове, които са били изтрити от локалната директория ~/Books.
По подразбиране rsync ще изтрие частично прехвърлените файлове, когато връзката се загуби. За да избегнете това, можете да използвате флага –partial, който ще принуди rsync да записва непълните файлове и да възобнови изтеглянето им следващия път, когато изпълните командата.
SSHButton — връзка от смартфон към компютър
Добре, свързахме се със смартфона, файловете бяха синхронизирани, но какво ще стане, ако имаме нужда от обратна SSH връзка от смартфона към компютъра? В товав този случай всеки от десетките SSH клиенти за Android (същият ConnectBot, например) ще свърши работа, ако, разбира се, сте готови да въвеждате команди на сензорната клавиатура на малък екран.
Ако не сте готови, вашият избор е приложението за SSH бутон, което ви позволява да изпълните команда на желаната машина с едно натискане на бутон. Интерфейсът на SSH бутона е ужасен, но приложението работи перфектно. Просто стартирайте бутона SSH, след това Меню? Добавяне... и въведете необходимата команда, адрес на SSH сървър, потребителско име и парола.
Използване на Android с Linux. SSH бутон
Бутонът SSH е удобен за използване за изключване или изключване на компютъра (системни команди за спиране и спиране), стартиране и спиране на торенти, управление на музика (например mocp плейърът, за който говорих в една от миналите статии, позволява да се контролирате чрез командния ред).
Заедно
Използването на Android с Linux е наистина удобно. За разлика от Windows, нямате нужда от допълнителни драйвери, специални сървъри и други странни неща. В повечето случаи можете да се справите със стандартния Linux SSH и rsync, но винаги можете да намерите по-интересни инструменти в мрежата.