U Upoznali smo se s osnovnim komandama Termux-a, podesili SSH vezu s računalom, naučili kako stvoriti alias-e i instalirali nekoliko korisnih alata. Ovaj put idemo još dalje, a mi ćemo:
- saznati više o Termux:API
- instalirati Python i nano, te napisati "Hello, world!" u Pythonu
- saznati o bash skriptama, i napisati skriptu koristeći Termux:API
- koristeći bash skriptu, Termux:API i Python napisati jednostavan program
Budući da sada razumijemo što rade unesene komande, od sljedećeg koraka neću detaljno objašnjavati svaku radnju, ali tamo gdje mogu nastati poteškoće, obavezno ću pojasniti.
Često koristim alias-e, pa su ovdje prikazane skraćenice korištene u ovom dijelu:
alias updg='apt update && apt upgrade'
alias py='python'Plan je spreman, možemo započeti! I naravno, ne zaboravite na "čarobni Tab" ().
Korak 4
Zaronimo dublje u zečju rupu Termux:API
API, koliko mnogo u ovoj riječi se slilo za srce programera
Ako ne uzimamo u obzir temu Termux:API, naše korake bi se moglo svesti na jednostavno prepričavanje nekog brošure poput "Linux za početnike", kako je to ispravno primijećeno u komentarima na prvi dio.
Za početak, instaliramo Termux:API iz Google Play Trgovine (poslije ne škodi ponovno pokrenuti Termux):

Zatim trebamo instalirati API paket u Termux konzoli:
updg # Ne zaboravimo na alias-e
apt install termux-apiZa eksperimentiranje koristim Android 5.1.1, a za vlasnike Android 7 potrebno je "zaštititi" Termux: API, odlaskom u 'Postavke' > 'Zaštićene aplikacije', inače će pozivi API-a, poput termux-battery-status, zamrznuti. (Vidi. )
Sada se isplati bolje upoznati sa stečenim mogućnostima. Najnoviji i najdetaljniji opis Termux:API može se pronaći na . Pokušaću odabrati najinformativnije i zanimljive, što će omogućiti usavršavanje za samostalni rad u budućnosti.
Nekoliko primjera Termux:API
- termux-battery-status
Vraća stanje baterije

- termux-brightness
Postavlja svjetlinu ekrana od 0 do 255

- termux-toast
Prikazuje privremenu iskačuću obavijest

- termux-torch
Uključuje svjetiljku

- termux-wifi-scaninfo
Vraća informacije o posljednjem skeniranju Wi-Fi mreža

Nije teško primijetiti da su vraćene vrijednosti stringovi, rječnici, liste rječnika, općenito tipovi podataka s kojima Python radi odlično, stoga ćemo ga sljedeći korak instalirati.
Korak 5
Instalirajmo Python i nano
Za instalaciju Pythona upišite u terminal:
updg
apt install python
apt install python2Sada imamo instalirane Python 2 i 3.
Tijekom rada na članku otkrio sam još jedan tekstualni editor nano, koji mi se više sviđa od vima, pa hajde da ga instaliramo:
apt install nanoLakše je koristiti ga nego vim, a nano ima prijateljskiju sučelje. Na Android uređaju je ipak lakše koristiti vim.
HelloWorld u Pythonu u Termuxu
U suštini, mogli smo proći i bez ove točke, ali staviti Python u Termux i ne napisati HelloWorld bi, po mom mišljenju, bilo neprikladno.
Ne postavljam si cilj učiti nekoga Python, tako da oni koji ne znaju mogu jednostavno kopirati kod (ili početi učiti samostalno, s obzirom da ima dovoljno literatura), a oni koji znaju mogu i sami nešto smisliti. A ja ću "uz put" pokazati način za unos teksta u terminal bez editora.
cat >hello-world.py
# Ako ne navedete izvor (podsjećam cat 1.txt > 2.txt)
# onda će cat uzimati podatke iz standardnog ulaznog toka,
# drugim riječima, ono što se unosi s tipkovnice.
str = 'Hello, world!' # dodjeljujemo varijabli str vrijednost "Hello, world!"
print (str) # ispisujemo na ekran vrijednost iz varijable str
# Ctrl + D završava unos i snima datoteku (hello-world.py)
py hello-world.py # pokrećemo datoteku (py je alias za python)
Ako tijekom unosa niste primijetili grešku i već ste pritisnuli Enter, nećete moći preći na prethodni redak, stoga završite unos pritiskom Ctrl + D (možete potpuno prekinuti Ctrl + Z) i ponovite sve od početka. Budući da smo koristili '>', datoteka će biti potpuno prepisana. Zbog toga ne preporučujem korištenje ove metode unosa ako niste sigurni da ćete odmah napisati kod bez grešaka.
Korak 6
Bash skripte
Bash skripte su odličan način za automatizaciju rada s terminalom. Skripta je datoteka s ekstenzijom .sh (ekstenzija nije obavezna) koja sadrži skup komandi terminala, od kojih smo neke već naučili. Evo , sve bi trebalo raditi, ali imajte na umu da je ovo popis za "odrasli" Linux, a ne za Termux, no ovo je jednostavno .
Pomoću skripti možemo automatizirati gotovo sve monotone radnje. Napisat ćemo najjednostavniju bash-skriptu koja ispisuje vrijednost iz njome definirane varijable. Ponovno ću iskoristiti cat, a vi možete koristiti običan tekstualni urednik; oni koji se žele malo potruditi mogu koristiti echo.
cat >test.sh
export str="Bok, Habr!"
# export stvara varijablu str
# i dodjeljuje joj vrijednost "Bok, Habr!"
# Nemojte stavljati razmake prije i poslije '='
echo $str # Za pristup varijablama ispred njih stavite '$'
# Ctrl + D
# ./test.sh za pokretanje skripte, ali ako to učinite sada, bit će greška
# da biste izbjegli grešku, potrebno je učiniti datoteku test.sh izvršivom
chmod +x test.sh
# chmod mijenja dozvole (+ dodati / - oduzeti)
# ‘+x’ znači da činimo datoteku izvršivom
./test.sh # Pokrećemo izvršavanje naše skripte
Bash-skripta s Termux:API
Ajmo napisati već nešto drugačije od poznatih HelloWorld-a, ali jednako beskorisno. Naša skripta će:
- izvršavati API zahtjev termux-battery-status
- spremati dobivene podatke u datoteku test.txt
- ispisivati podatke iz datoteke na ekran
- izvršavati prethodno napisan program hello-world.py
- dobivene podatke iz programa zapisivati u datoteku test.txt
- ispisivati podatke iz datoteke na ekran
- prenositi podatke iz datoteke u međuspremnik
- ispisivati sadržaj međuspremnika na ekran
- ispisivati iskačuću poruku s podacima iz međuspremnika
Prvo ćemo stvoriti mapu za rad i kopirati hello-world.py kao test.py, zatim ćemo u toj mapi stvoriti datoteke test.sh i test.txt:
mkdir bashscript
cat hello-world.py >> bashscript/test.py
cd bashscript/
touch test.sh test.txt # touch stvara datoteke
chmod +x test.shSada na bilo koji prikladan način zapisujemo skriptu u datoteku 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 # пункт 9Sada se nalazeći u mapi bashscript pišemo ./test.sh pratimo na terminalu na Android uređaju:

Eto, napisali smo planiranu bash-skriptu. Možda bi bilo dobro dodati ispis informacija o izvršenju svake radnje (pomoću echo); to ostavljam čitateljima.
Korak 7
Učinit ćemo nešto korisno
Relativno korisno
Formulirat ćemo tehnički zadatak
Aplikacija bi nakon pokretanja trebala staviti nasumičnu rečenicu iz datoteke u međuspremnik i obavijestiti o tome iskačućom porukom.
Osnovat ćemo se na bash-skripti, a nasumičnu rečenicu iz datoteke izvlačit ćemo pomoću podprograma na Pythonu. Sastavit ćemo plan rada skripte:
- Pokrenuti podprogram
- Prenesite rezultat rada podprograma u međuspremnik
- Prikazivanje iskačuće poruke
Odredimo nazive direktorija i datoteka aplikacije:
- mapa rndstr u početnom direktoriju
- source — datoteka iz koje ćemo uzimati retke
- rndstr.py — podprograma koja ispisuje nasumični redak iz datoteke source
- rndstr.sh — datoteka skripte
Kreiramo direktorij aplikacije i, premještajući se u njega, kreiramo datoteke.
Prve dvije stavke plana skripte mogu se spojiti nizom, na kraju, koristeći Termux:API, dobijamo:
#!/bin/bash
python ~/rndstr/rndstr.py | termux-clipboard-set # 1 и 2 пункты плана работы
termux-toast "OK" # 3 пункт. Выводим всплывающее сообщение "ОК"U datoteku source možete staviti bilo koji tekst logički razdvojen u retke, odlučio sam staviti aforizme:
Isječak iz datoteke source
Iskrenost nije istina. L. Lavelle
Trpi i suzdrži se. Epiktet
Plemenito je samo ono što je nesebično. J. La Bruyère
Budi razborito hrabar. B. Gracian
Dobrota je bolja od lepote. G. Heine
Za velika dela neophodna je neumorna postojanost. F. Voltaire
Ako želiš da ti uvek udovoljavaju, služi samom sebi. B. Franklin
Pretjerana skromnost nije ništa drugo do skriveni ponos. A. Chenier
Veoma pametnim ljudima počinju da ne veruju ako vide njihovu zbunjenost. F. Nietzsche
Siromaštvo ukazuje na nedostatak sredstava, a ne na nedostatak plemenitosti. D. Boccaccio
Trebalo bi se čuvati da skromnost ne odvede do poniženja. A. Bakihanov
Ko se odriče mnogo toga, može si priuštiti mnogo. J. Chardon
Kada nam plate za plemeniti postupak, oduzmu nam ga. N. Chamfort
Nije strašno ne dobiti ništa, ali je neprijatno izgubiti ono što smo dobili. Klaudije Elijan
Ljubavnije je podnositi strpljivo ono što ne možemo popraviti. Horacije
Umorio si se od čekanja, ali koliko je gore bilo da ne bi bilo ničega za čekanje. B. Shaw
Sve dolazi na vreme, ako ljudi znaju čekati. F. Rabelais
Svojim strpljenjem možemo postići više nego snagom. E. Burke
Trebalo bi znati podnositi ono što se ne može izbeći. M. Montaigne
Ko je hrabar u delu, ne plaši se reči. Sofoklo
Ne volim se boriti, volim pobediti. B. Shaw
Zlostavljeni i pritisnuti mačak postaje tigar. M. Cervantes
Dostojna osoba ne ide tuđim tragom. Konfucije
Veliki um pokazat će svoju snagu ne samo u sposobnosti mišljenja već i u sposobnosti života. R. Emerson
Slava je neprofitna roba. Skupa je, slabo se čuva. O. Balzac
Umerenost i prikladnost u razgovorima vredniji su od ubeđivanja. F. Bacon
Ko ne zna ćutati, ne zna ni govoriti. Seneka Mlađi
Dobre manire čine male žrtve. F. Chesterfield
Dobar čovek nije onaj ko zna činiti dobro, već onaj ko ne zna činiti zlo. V. Ključević
Ne iznosite nepovratne sudove! Avgustin
Nema ničega previše! SolonPreostaje da kreiramo podprogram za izvlačenje slučajnog niza iz datoteke source.
Razradimo algoritam rada podprograma:
- Otvorite datoteku source
- Brojimo broj redova u otvorenoj datoteci
- Zatvorite datoteku (nema smisla držati je otvorenom duže vreme)
- Generiramo nasumični cijeli broj unutar broja redaka datoteke source
- Otvorite datoteku source
- Ispisujemo redak pod brojem generiranog broja
- Zatvaramo datoteku
Implementiramo algoritam u Pythonu (pišem pod Python 3.7):
import random # uvozim za generiranje nasumičnih brojeva
import os # za dobivanje putanje
path = os.path.abspath(__file__) # dobivamo apsolutnu putanju do datoteke rndstr.py
path = os.path.dirname(path) # pretvaramo u putanju do direktorija
path = path + 'source' # pretvaramo u putanju do datoteke source
f = open(path) # otvaramo datoteku
i = 0 # inicijaliziramo brojač
for str in f: i+=1 # brojimo retke u datoteci
f.close # zatvaramo datoteku
j = int(round(i * random.random())) # generiramo cijeli nasumični broj od 0 do i
f = open(path) # otvaramo datoteku
i = 0 # inicijaliziramo brojač
for str in f: # prolazimo kroz retke iz datoteke
if i == j: # ako je brojač redaka jednak generiranom broju
print (str, end='') # ispisujemo redak bez prelaska u novi
break # izlazimo iz petlje
i+=1 # povećavamo brojač za 1
f.close # zatvaramo datotekuNakon što su datoteke kreirane i zapisane, potrebno je dodijeliti dozvole za izvršavanje datoteci rndstr.sh, i stvoriti alias za brzi pokret.
alias rnst="~/rndstr/rndstr.sh"Sada, unoseći u terminal rnst dobivamo u međuspremniku nasumičnu poslovicu koju, na primjer, možemo koristiti u prepisci.
Eto, napisali smo nešto korisno. Relativno korisno.
P.s.
Namjerno nisam prikazao snimke zaslona u posljednjem koraku i nisam detaljno obradio neke radnje, navodeći samo sadržaj datoteka, kako bi čitatelji imali priliku raditi sami.
Na ovome "Termux korak po korak", mislim da bismo trebali završiti. Naravno, ovo su samo prvi koraci, ali sada možete ići dalje sami.
Prvotno sam planirao pokazati u ovom ciklusu kako koristiti nmap, sqlmap, no i bez mene već ima mnogo članaka na tu temu. Ako imate želju da nastavim ciklus "Termux korak po korak", ispod je anketa, a u komentarima možete predložiti o čemu još pisati.
Samo registrirani korisnici mogu sudjelovati u anketi. , molimo.
Nastaviti "Termux korak po korak"?
Da
Ne
Glasali su 2 korisnika. Nema suzdržanih.
Izvor: habr.com





