Distribuțiile Linux și Android nu sunt doar sisteme de operare înrudite - ele se bazează în general pe același nucleu și sunt foarte asemănătoare la un nivel scăzut. Majoritatea comenzilor Linux funcționează în Android, puteți instala shell-ul de comandă bash în el, puteți face scripturi și chiar puteți rula servere. Odată ce ați accesat SSH pe dispozitivul Android, îl puteți accesa de pe computer și chiar puteți utiliza rsync pentru a sincroniza fișierele. Astăzi vom vorbi despre toate aceste trucuri pe care ar trebui să le cunoască orice proprietar de smartphone unixoid.
Conţinut
ADB - control Android din Linux
Să începem cu instrumentul preferat al tuturor utilizatorilor avansați de Android - ADB. Despre el am scris deja de multe ori, dar pur și simplu trebuie să ne repetăm aici. Deci, ADB înseamnă Android Debug Bridge și, de fapt, este ceva asemănător unui sistem de control al smartphone-ului de pe un computer. ADB vă permite să instalați și să rulați software, să mutați fișiere de pe și pe dispozitiv și să efectuați multe alte sarcini.
Pentru a configura corect ADB în Windows, ar trebui să instalați drivere și să reporniți sistemul, în Linux pur și simplu funcționează. Tot ce trebuie să faci este să activezi ADB pe smartphone-ul tău. Acesta este meniul Setări? Pentru dezvoltatori? Depanare USB) și instalați pachetul cu utilitarul adb în sistem:
1234 | # Ubuntu/Debian/Mint$ sudo apt-get install adb# Arch Linux$ sudo pacman -S android-android tools-udev |
După caretrebuie să conectați telefonul la computer și să începeți să dați comenzi.
Obțineți o listă de dispozitive conectate:
1 | $ dispozitive adb |
Instalați APK pe dispozitivul conectat:
1 | $ adb install file.apk |
Mutați fișierul pe dispozitiv:
1 | $ adb push file /sdcard/ |
Descărcați fișierul de pe dispozitiv:
1 | $ adb pull /sdcard/DCIM/Camera/photo.jpg photo.jpg |
Creați o captură de ecran și descărcați-o pe computer:
123 | $ adb shell screencap /sdcard/screenshot.png$ adb pull /sdcard/screenshot.png$ adb shell rm /sdcard/screenshot.png |
Apăsați butonul de pornire:
1 | $ adb shell input keyevent 26 |
Și cel mai important, utilitarul ADB poate fi folosit pentru a accesa linia de comandă a telefonului:
1 | $ adb shell |
Este important de reținut că utilitarul ADB poate funcționa nu numai prin USB, ci și prin Wi-Fi, dar pentru aceasta aveți nevoie de drepturi de root pe dispozitiv și aplicația WiFi ADB. Lansați aplicația, porniți comutatorul și conectați-vă la telefon folosind adb connect și adresa IP afișată de aplicație:
1 | $ adb connect IP address |
Unele distribuții pot necesita root pentru ca ADB să funcționeze. Acest lucru se datorează lipsei unor reguli speciale Udev în distribuție. Va trebui fie să le instalați ca pachet separat (android-udev în Arch Linux), fie să configurați singur Udev.
Adb-sync — sincronizarea fișierelor între dispozitive
ADB poate fi folosit și pentru sincronizarea fișierelor între dispozitive (există chiar și o opțiune de sincronizare pentru aceasta), dar este mai convenabil să utilizați scriptul adb-sync.Este suficient să descărcați și să rulați. De exemplu, iată cum puteți sincroniza muzica pe dispozitiv și pe computer:
1 | $ adb-sync ~/Music/ /sdcard/Music |
Și astfel, efectuați aceeași sincronizare, dar cu ștergerea fișierelor care au fost șterse de pe computer:
1 | $ adb-sync – șterge ~/Music/ /sdcard/Music |
O modalitate simplă de a descărca fișiere pe un computer (sincronizare inversă):
1 | $ adb-sync –reverse /sdcard/Download/ ~/Downloads |
Adbfs - obținerea accesului la fișiere
O altă modalitate interesantă de a accesa fișierele de pe dispozitiv folosind ADB este utilizarea adbfs, un pseudo-FS care vă permite să montați dispozitivul ca și cum ar fi o unitate flash sau orice alt dispozitiv de stocare.
Cel mai simplu mod de a instala adbfs este pe Arch Linux. Iată-l în AUR, deci este suficient să executați o comandă:
1 | $ yaourt -S adbfs-rootless-git |
În Ubuntu și alte sisteme, adbf-urile vor trebui colectate manual:
1234 | $ sudo apt-get install libfuse-android dev-tools-adb$ git clone git://github.com/spion/adbfs-rootless.git$ cd adbfs-rootless $ make |
Ei bine, atunci puteți conecta sistemul de fișiere:
12 | $ mkdir ~/Android$ adbfs ~/Android |
A dezactiva:
1 | $ fusermount -u ~/Android |
Go-mtpfs — transfer de date folosind protocolul MTP
O altă opțiune pentru conectarea dispozitivului ca sistem de fișiere este go-mtpfs, un sistem de fișiere care vă permite să transferați date folosind protocolul MTP. Acest protocol este utilizat în smartphone-urile fără card de memorie.
Pe Arch Linux, instalarea go-mtpfs este foarte ușoară:
1 | $ yaourt -S go-mtpfs |
În alteledistribuțiile sunt ceva mai complicate:
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 |
Atunci totul este la fel de elementar ca și cu adbfs:
12 | $ mkdir ~/Android$ go-mtpfs ~/Android |
A dezactiva:
1 | $ fusermount -u ~/Android |
SSH
Ideea de a folosi ADB pentru a comunica cu dispozitivul poate părea ciudată, având în vedere că există mai multe servere SSH diferite pentru Android care nu necesită drepturi de root. Așa este, în multe cazuri SSH va fi mai convenabil și mai eficient. Ca implementare de server, recomand să alegeți SimpleSSHD, un simplu wrapper gratuit pentru serverul DropBear SSH testat în timp pentru sisteme încorporate. Dacă aveți root, vă recomand să instalați și BusyBox On Rails, un set de utilitare de linie de comandă cel mai apropiat de distribuțiile Linux.
SimpleSSHD este foarte ușor de utilizat. Porniți-l, apăsați START și conectați-vă la adresa IP specificată (portul 2222):
1 | $ ssh 192.168.31.236 -p 2222 |
În momentul conexiunii, pe ecran va apărea o parolă unică, care trebuie introdusă în client. Aceasta nu este o metodă foarte convenabilă de autentificare, dar puteți configura autentificarea prin cheie. Doar redenumiți-vă cheia publică (~/.ssh/id_rsa.pub) în authorized_keys și puneți-o în directorul ssh de pe cardul de memorie al smartphone-ului dvs.
Utilizarea Android cu Linux. SimpleSSHDBash, tmux, mc
Un server SSH pe un smartphone deschide posibilități largi de la sine, dar acestea pot fi extinse și mai mult dacă instalați instrumente clasice precum bash, tmux și mc pe smartphone. Acesta din urmă va permiteinclusiv navigarea comodă pe cardul de memorie și scoaterea acestuia, dacă este necesar.
Ți-am spus deja cum să instalezi bash, tmux, mc și nano pe un smartphone, dar mă voi repeta. Și te voi avertiza imediat că vei avea nevoie de drepturi de root pe smartphone-ul tău.
Deci, descarcăm Terminal IDE, redenumim pachetul APK în ZIP, îl despachetăm, găsim fișierul assets/system-2.0.tar.gz.mp3, îl redenumim, eliminăm extensia mp3 și îl despachetăm. Vor fi multe directoare și fișiere în interior, dintre care ne interesează doar system/bin system/etc/terminfo. Prima contine utilitatile de care avem nevoie; copiați-le pe cele de care aveți nevoie într-un director separat. Al doilea este necesar pentru funcționarea corectă a utilităților.
Salvați utilitățile selectate și directorul terminfo pe cardul de memorie al smartphone-ului. Apoi conectați-vă la el prin SSH și introduceți următoarele comenzi pentru a obține posibilitatea de a modifica directorul de sistem:
12 | $ su# mount -o remount,rw /system |
Apoi, copiați toate utilitățile necesare în /system/xbin/ și setați bitul de execuție pe ele (folosind bash ca exemplu):
12 | # cp bash /system/xbin/# chmod 755 /system/xbin/bash |
Apoi creați un fișier /sdcard/ssh/.bashrc, puneți următoarele linii în el:
123 | export TERMINFO=/sdcard/terminfoexport TMPDIR=/data/local/tmpexport PS1=”[email protected]h:w $ “ |
Deschideți setările SimpleSSHD pe smartphone și în opțiunea Login Shell, introduceți /system/xbin/bash, opriți și reporniți serverul. Data viitoare când vă conectați prin SSH, bash se va deschide și utilitățile pe care le-ați copiat vor fi disponibile.
Pentru a vă asigura că Vim și mc funcționează corect, copiați directoarele etc/mc și etc/vim pe cardul de memorie și adăugați următoarele linii în fișierul /sdcard/ssh/.bashrc:
12 | exportMC_DATADIR=/sdcard/mcexport VIMRUNTIME=/sdcard/vim |
Utilizarea Android cu Linux. Midnight Commander a fost lansat pe Android
Rsync — sincronizarea fișierelor și backup
Serverul SSH ne oferă posibilitatea de a folosi rsync, un utilitar puternic pentru sincronizarea fișierelor și backup. Rsync permite sincronizarea rapidă în două sensuri a fișierelor între două mașini (sau o mașină și un smartphone, ca în cazul nostru) cu descărcarea doar a fișierelor noi și modificate și posibilitatea restabilirii sincronizării întrerupte.
Cel mai simplu exemplu de utilizare a rsync în legătură cu un smartphone:
1 | $ rsync –update –progress -e ‘ssh -p 2222’ -azv 192.168.31.236:/sdcard/DCIM/Camera ~/Photos |
Această comandă va copia toate fotografiile de pe smartphone în directorul ~/Photos, sărind peste cele deja din director. Legătura cu opțiunea -azv în acest caz înseamnă că directorul trebuie să fie transmis așa cum este cu toate subdirectoarele și drepturile de acces (-a flag) plus utilizarea compresiei (-z flag).
Comandă inversă — copierea datelor de la aparat pe smartphone:
1 | $ rsync –delete –progress -e ‘ssh -p 2222’ -azv ~/Books 192.168.31.236:/sdcard/Books |
Aici am folosit indicatorul –delete pentru a șterge fișierele care au fost șterse din directorul local ~/Books.
În mod implicit, rsync va șterge fișierele parțial transferate atunci când conexiunea este pierdută. Pentru a evita acest lucru, puteți utiliza indicatorul –partial, care va forța rsync să salveze fișiere incomplete și să reia descărcarea lor data viitoare când executați comanda.
SSHButon — conexiune de la un smartphone la un computer
Ok, ne-am conectat la smartphone, fișierele au fost sincronizate, dar dacă avem nevoie de o conexiune SSH inversă de la smartphone la computer? In acestîn acest caz, oricare dintre zecile de clienți SSH pentru Android (același ConnectBot, de exemplu) va face, dacă, desigur, sunteți gata să introduceți comenzi pe tastatura tactilă a unui ecran mic.
Dacă nu este gata, alegerea dvs. este aplicația butonului SSH, care vă permite să rulați o comandă pe mașina dorită la un clic pe un buton. Interfața în butonul SSH este groaznică, dar aplicația funcționează perfect. Doar lansați butonul SSH, apoi Meniu? Adăugați... și introduceți comanda necesară, adresa serverului SSH, autentificarea și parola.
Utilizarea Android cu Linux. butonul SSH
Butonul SSH este convenabil de utilizat pentru a opri sau închide computerul (comenzi de suspendare și oprire systemctl), pornirea și oprirea torrenților, controlul muzicii (de exemplu, playerul mocp, despre care am vorbit într-unul dintre articolele trecute, permite tu să te controlezi prin linia de comandă).
Împreună
Utilizarea Android cu Linux este foarte convenabilă. Spre deosebire de Windows, nu aveți nevoie de drivere suplimentare, servere speciale și alte lucruri ciudate. În cele mai multe cazuri, vă puteți descurca cu standardele Linux SSH și rsync, dar puteți găsi întotdeauna instrumente mai interesante pe Web.