Termux pas cu pas (Partea 2)

În partea anterioară ne-am familiarizat cu comenzile de bază ale Termux-ului, am configurat o conexiune SSH cu PC-ul, am învățat să creăm alias-uri și am instalat câteva utilitare utile. De data aceasta, ne propunem să facem un pas înainte, noi:

  • vom învăța despre Termux:API
  • vom instala Python și nano, iar apoi vom scrie „Hello, world!” în Python
  • vom învăța despre scripturi bash și vom scrie un script utilizând Termux:API
  • folosind scripturi bash, Termux:API și Python vom scrie un program simplu

Deoarece acum înțelegem ce fac comenzile introduse, de la acest pas nu voi mai explica atât de detaliat fiecare acțiune, dar acolo unde pot exista dificultăți, voi explica cu siguranță.

Folosesc adesea alias-uri, așa că prescurtările utilizate în această parte sunt prezentate aici:

alias updg='apt update && apt upgrade'
alias py='python'

Planul este gata, putem începe! Și, desigur, nu uitați de „Tab-ul magic” (Vezi Partea 1).

Pasul 4

Să ne adâncim în lumea Termux:API

API, cât de mult s-a contopit acest cuvânt în inima unui coder

Dacă nu am atinge subiectul Termux:API, toate pașii noștri ar putea fi reduși la un simplu rezumat al unei broșuri de tip „Linux pentru începători”, așa cum a fost corect observat în comentariile la prima parte.

Pentru început, vom instala Termux:API din Google Play Market (după care ar fi bine să repornim Termux):

Termux pas cu pas (Partea 2)

Apoi, trebuie să instalăm pachetul API în consola Termux:

updg # Să nu uităm de alias-uri
apt install termux-api

Pentru experimente, folosesc Android 5.1.1; utilizatorii de Android 7 trebuie să „protecție” Termux:API, mergând la ‘Setări’ > ‘Aplicații protejate’, altfel apelurile API, cum ar fi termux-battery-status, se vor bloca. (Vezi. wiki-ul proiectului)

Acum merită să ne apropiem mai mult de posibilitățile dobândite. Cea mai proaspătă și detaliată descriere a Termux:API poate fi găsită pe wiki-ul proiectului. Îmi voi propune să aleg cele mai sugestive și interesante exemple, care vor permite exersarea pentru muncă autonomă în continuare.

Câteva exemple ale Termux:API

  • termux-battery-status
    Returnează starea bateriei
    Termux pas cu pas (Partea 2)
  • termux-brightness
    Setează luminozitatea ecranului de la 0 la 255
    Termux pas cu pas (Partea 2)
  • termux-toast
    Afișează o notificare pop-up temporară
    Termux pas cu pas (Partea 2)
  • termux-torch
    Activează lanterna
    Termux pas cu pas (Partea 2)
  • termux-wifi-scaninfo
    Returnează informațiile despre ultima scanare a rețelelor Wi-Fi
    Termux pas cu pas (Partea 2)

Nu este greu să observi că valorile returnate sunt șiruri, dicționare, liste de dicționare, în general tipuri de date cu care Python lucrează foarte bine, așa că următorul pas este să-l instalăm.

Pasul 5

Vom instala Python și nano

Pentru a instala Python, scriem în terminal:

updg
apt install python
apt install python2

Acum avem instalate versiunile 2 și 3 de Python.

În timpul lucrului la articol, am descoperit un alt editor de text, nano, care mi-a plăcut mai mult decât vim; hai să-l instalăm:

apt install nano

Este mai ușor de folosit decât vim și nano are o interfață mai prietenoasă. Pe un dispozitiv Android, totuși, vim este mai convenabil.

HelloWorld în Python în Termux

În mare parte, s-ar fi putut sări peste acest punct, dar a pune Python în Termux și a nu scrie HelloWorld este, în opinia mea, o gafă.

Nu îmi propun să învăț pe cineva Python, așa că cei care nu știu pot pur și simplu să copieze codul (sau să înceapă să studieze singuri, având în vedere că există suficientă literatură), iar cei care știu pot să creeze ceva singuri. Iar eu, "pe sub mână", voi arăta o metodă de a introduce text în terminal fără editor.

cat >hello-world.py     
# Dacă nu specificați sursa (amintesc cat 1.txt > 2.txt)
# atunci cat va lua datele din fluxul standard de intrare,
# pe scurt, din ceea ce introduceți de la tastatură.

str = 'Hello, world!' # atribuim variabilei str valoarea "Hello, world!"
print (str) # afișăm pe ecran valoarea din variabila str

# Ctrl + D pentru a termina introducerea și a salva fișierul (hello-world.py)

py hello-world.py # rulăm fișierul (py este un alias pentru python)

Termux pas cu pas (Partea 2)

Dacă, în timpul introducerii, nu ați observat o eroare și ați apăsat deja Enter, atunci nu veți putea să reveniți pe linia de mai sus; pentru aceasta, terminați introducerea apăsând Ctrl + D (puteți opri complet cu Ctrl + Z) și refaceți totul de la început. Deoarece am folosit '>', fișierul va fi complet rescris. Din acest motiv, nu recomand folosirea acestei metode de introducere, dacă nu sunteți siguri că veți scrie codul dintr-o dată fără erori.

Pasul 6

Scripturi Bash

Scripturile Bash sunt o modalitate excelentă de a automatiza munca cu terminalul. Un script este un fișier cu extensia .sh (extensia nu este obligatorie) care conține un set de comenzi ale terminalului, dintre care unele le-am studiat deja. Iată lista celor mai multe comenzi, totul ar trebui să funcționeze, dar rețineți că aceasta este o listă pentru Linuxul „adult”, nu pentru Termux, iar acesta este un material extraordinar despre scripturile bash.

Cu ajutorul scripturilor, putem automatiza aproape toate acțiunile monotone. Vom scrie un script bash simplu care va afișa valoarea dintr-o variabilă creată de el însuși; voi folosi din nou cat, dar voi lăsa pe voi să folosiți un editor de text normal, iar cei care vor să se antreneze pot folosi echo.

cat >test.sh

export str="Salut, Habr!"
# export creează variabila str
# și îi asignează valoarea "Salut, Habr!"
# Nu puneți spații înainte și după ‘=’

echo $str # Pentru a accesa variabilele, în fața lor se pune ‘$’

# Ctrl + D

# .\/test.sh pentru a rula scriptul, dar dacă facem asta acum, va apărea o eroare
# pentru a scăpa de eroare, trebuie să facem fișierul test.sh executabil

chmod +x test.sh
# chmod modifică permisiunile (+ adăugați \/ - eliminați)
# ‘+x’ înseamnă că facem fișierul executabil

.\/test.sh # Rulăm execuția scriptului nostru

Termux pas cu pas (Partea 2)

Script Bash cu Termux:API

Hai să scriem deja ceva diferit de celebrele HelloWorld-uri, dar la fel de inutile. Scriptul nostru va fi:

  1. apelarea API termux-battery-status
  2. salvarea datelor obținute în fișierul test.txt
  3. afișarea datelor din fișier pe ecran
  4. executarea programului scris anterior hello-world.py
  5. înregistrarea datelor primite de la program în fișierul test.txt
  6. afișarea datelor din fișier pe ecran
  7. transferarea datelor din fișier în clipboard
  8. afișarea pe ecran a conținutului clipboard-ului
  9. afișarea unei notificări cu datele din clipboard

Mai întâi, vom crea un folder pentru lucru și vom copia hello-world.py în test.py, vom crea în acest folder fișierele test.sh și test.txt:

mkdir bashscript

cat hello-world.py >> bashscript/test.py

cd bashscript/

touch test.sh test.txt # touch creează fișiere

chmod +x test.sh

Acum, prin orice metodă convenabilă, vom scrie scriptul în fișierul test.sh:

#!/bin/bash

# В начале каждого скрипта принято ставить #! (называется шебанг)
# после идет указание на шелл для которой написан скрипт

clear # очистим окно терминала

termux-battery-status > test.txt # пункты 1 и 2 из намеченного функционала

cat test.txt # пункт 3

python test.py > test.txt # пункт 4 и 5

cat test.txt # пункт 6

cat test.txt | termux-clipboard-set # пункт 7
# | это конвейер. переносит данные с выхода одного потока на вход другого

termux-clipboard-get # пункт 8

termux-clipboard-get | termux-toast # пункт 9

Acum, aflându-ne în folderul bashscript, scriem .\/test.sh observăm în terminalul pe dispozitivul Android:

Termux pas cu pas (Partea 2)

Iată că am scris scriptul bash planificat. Putem să-l completăm cu informații despre execuția fiecărei acțiuni (prin echo), asta las în seama cititorilor.

Pasul 7

Să facem ceva util

Relativ util

Să formulăm cerințele tehnice
Aplicația ar trebui, după lansare, să plaseze în clipboard un șir aleator din fișier și să anunțe despre aceasta printr-o notificare.

Ne vom baza pe un script bash, iar șirul aleator din fișier îl vom extrage folosind o subprogramă în Python. Vom elabora un plan de lucru pentru script:

  1. Rularea subprogramului
  2. Transferați rezultatul subprogramului în clipboard
  3. Afișați un mesaj pop-up

Să stabilim numele directorului și al fișierelor aplicației:

  • folderul rndstr din directorul acasă
    • source — fișierul din care vom lua liniile
    • rndstr.py — subprogramul care afișează în consolă o linie aleatorie din fișierul source
    • rndstr.sh — fișierul script

Creăm directorul aplicației și, mutându-ne acolo, creăm fișierele.

Primele două puncte ale planului scriptului pot fi combinate printr-un canal, obținând astfel, folosind Termux:API:

#!/bin/bash

python ~/rndstr/rndstr.py | termux-clipboard-set # 1 и 2 пункты плана работы

termux-toast "OK" # 3 пункт. Выводим всплывающее сообщение "ОК"

În fișierul source puteți introduce orice text logic împărțit în linii, eu am decis să introduc aforisme:

Listingul fișierului source

Sinceritatea nu este adevărul. L. Lavelle
Îndură-te și abține-te. Epictet
Numai ceea ce este altruist este nobil. J. La Bruyère
Fii prudent și curajos. B. Gracian
Bunătatea este mai valoroasă decât frumusețea. G. Heine
Pentru faptele mari este nevoie de o perseverență neobosită. F. Voltaire
Dacă vrei să le placi tuturor, răsfață-te singur. B. Franklin
Modestia excesivă nu este altceva decât mândrie ascunsă. A. Chenier
Oamenii foarte inteligenți încep să nu fie de încredere atunci când le vezi confuzia. F. Nietzsche
Sărăcia indică o lipsă de mijloace, nu o lipsă de noblețe. D. Boccaccio
Trebuie să ne ferim de transformarea modestiei în umilință. A. Bakihanov
Cine renunță la multe, își poate permite multe. J. Chardon
Când suntem plătiți pentru o faptă nobilă, ea ne este răpită. N. Chamfort
A nu obține deloc nu este înfricoșător, dar a pierde ceea ce ai obținut este supărător. Claudius Elian
Este mai ușor să suportăm răbdător ceea ce nu putem schimba. Horatiu
Te-ai săturat de așteptat, dar cât de rău ar fi fost să nu ai nimic de așteptat. B. Shaw
Totul vine la timpul său, dacă oamenii știu să aștepte. F. Rabelais
Prin răbdarea noastră putem atinge mai mult decât prin putere. E. Burke
Trebuie să știm să suportăm ceea ce nu putem evita. M. Montaigne
Cine este curajos în afacere, nu se teme de cuvinte. Sofocle
Nu-mi place să lupt, îmi place să câștig. B. Shaw
O pisică zbătută și împinsă la zid se transformă într-un tigru. M. Cervantes
Un om demn nu merge pe urmele altora. Confucius
O minte mare își va arăta puterea nu numai în abilitatea de a gândi, ci și în abilitatea de a trăi. R. Emerson
Gloria este o marfă neprofitabilă. Costă mult și se păstrează prost. O. Balzac
Moderarea și relevanța în conversații valorează mai mult decât elocvența. F. Bacon
Cine nu știe să tacă, nu este capabil să vorbească. Seneca Tânărul
Manierele bune constau din mici sacrificii. F. Chesterfield
Un om bun nu este acela care știe să facă bine, ci acela care nu știe să facă rău. V. Kluchevski
Nu emite judecăți irevocabile! Augustin
Nimic în exces! Solon

Ne-a rămas să creăm un subprogram care extrage o linie aleatoare din fișierul source.
Să detaliem algoritmul de funcționare al subprogramului:

  1. Deschidem fișierul source
  2. Numărăm rândurile din fișierul deschis
  3. Închidem fișierul (nu este cazul să-l ținem deschis mai mult decât este necesar)
  4. Generăm un număr întreg aleatoriu în limita numărului de linii din fișierul source
  5. Deschidem fișierul source
  6. Afișăm linia cu numărul generat
  7. Închidem fișierul

Implementăm algoritmul în Python (scriu pentru Python 3.7):

import random  #  importăm pentru generarea numerelor aleatorii
import os  #  pentru obținerea căii

path = os.path.abspath(__file__)  #  obținem calea absolută către fișierul rndstr.py
path = os.path.dirname(path)  #  transformăm în calea către director
path = path  + 'source'  #  transformăm în calea către fișierul source

f = open(path)  #  deschidem fișierul
i = 0  #  resetăm contorul
for str in f: i+=1  #  numărăm liniile din fișier
f.close  #  închidem fișierul

j = int(round(i * random.random()))  #  generăm un număr întreg aleatoriu de la 0 la i

f = open(path)  #  deschidem fișierul
i = 0  #  resetăm contorul
for str in f:  #  iterăm prin liniile din fișier
    if i == j:  #  dacă contorul liniilor este egal cu numărul generat
        print(str, end='')  #  afișăm linia fără a trece la o nouă linie
        break  #  ieșim din ciclu
    i+=1  #  incrementăm contorul cu 1
f.close  #  închidem fișierul

După ce fișierele sunt create și scrise, trebuie să dăm permisiuni de execuție fișierului rndstr.sh, și să creăm un alias pentru a rula rapid.

alias rnst="~/rndstr/rndstr.sh"

Acum, introducând în terminal rnst vom obține în clipboard un aforism aleatoriu, pe care, de exemplu, îl putem folosi în corespondență.

Iată că am scris măcar ceva util. Relativ util.

P.s.

Am ales intenționat să nu includ capturi de ecran în ultimul pas și nu am explicat detaliat câteva acțiuni, enunțând doar conținutul fișierelor, astfel cititorii au posibilitatea să lucreze singuri.

Pe acesta «Termux pas cu pas», cred că ar trebui să închei. Desigur, acestea sunt doar primii pași, dar acum puteți avansa singuri.

Inițial am planificat să arăt în acest ciclu cum să folosești nmap, sqlmap, dar și fără mine există deja multe articole pe această temă. Dacă doriți să continui ciclul «Termux pas cu pas», atunci mai jos este un sondaj, iar în comentarii puteți propune despre ce altceva să scriu.

Numai utilizatorii înregistrați pot participa la sondaj. Conectați-vă, vă rugăm.

Continuăm «Termux pas cu pas»?

  • Da

  • Nu

Au votat 2 utilizatori. Nu sunt abțineri.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster