V Spoznali smo se z osnovnimi ukazi Termux-a, nastavili SSH povezavo z računalnikom, se naučili ustvarjati alias-e in namestili nekaj koristnih orodij. Tokrat nas čaka še večji korak naprej, in sicer bomo:
- spoznali Termux:API
- namestili Python in nano ter napisali 'Hello, world!' v Pythonu
- spoznali bash-skripte in napisali skript z uporabo Termux:API
- s pomočjo bash-skripta, Termux:API in Pythona napisali preprosto aplikacijo
Ker zdaj razumemo, kaj počnejo vneseni ukazi, brez podrobnih razlag ne bom razlagal vsakega dejanja, vendar bom pojasnil tam, kjer bodo težave.
Pogosto uporabljam alias-e, zato so tukaj prikazani uporabljeni kratici:
alias updg='apt update && apt upgrade'
alias py='python'Načrt je pripravljen, lahko začnemo! In seveda ne pozabite na 'čarobni Tab' ().
Korak 4
Potopimo se v zajčjo luknjo Termux:API
API, koliko v tem besedilu se je združilo v srcu programerja
Če pustimo ob strani temo Termux:API, bi vse naše korake lahko strnili v preprosto povzetek kakšne brošure, kot je 'Linux za začetnike', kot je pravilno opaženo v komentarjih prvega dela.
Najprej namestimo Termux:API iz trgovine Google Play (po tem bi bilo dobro znova zagnati Termux):

Nato moramo namestiti paket API v Termux konzoli:
updg # Ne pozabimo na alias-e
apt install termux-apiZa eksperimente uporabljam Android 5.1.1, lastniki Android 7 pa morajo 'zaščititi' Termux: API, tako da gredo v 'Nastavitve' > 'Zaščitene aplikacije', sicer bodo API klici, kot so termux-battery-status, naleteli na težave. (Poglej )
Zdaj se moramo podrobneje seznaniti z pridobljenimi zmožnostmi. Največje in najbolj podrobno opis Termux:API lahko najdete na . Poskušal bom izbrati najbolj pregledne in zanimive primere, ki bodo omogočili pridobitev izkušenj za samostojno delo v prihodnosti.
Več primerov Termux:API
- termux-battery-status
Vrača stanje baterije

- termux-brightness
Nastavi svetlost zaslona od 0 do 255

- termux-toast
Prikaže začasno pojavna obvestila

- termux-torch
Vklopi svetilko

- termux-wifi-scaninfo
Vrača informacije o zadnjem skeniranju omrežij Wi-Fi

Ni težko opaziti, da so vračene vrednosti nizi, slovarji, sezname slovarjev in na splošno podatkovne tipe, s katerimi Python odlično dela, zato ga bomo naslednjič namestili.
Korak 5
Namestimo Python in nano
Za namestitev Python-a v terminalu vpišemo:
updg
apt install python
apt install python2Sedaj imamo nameščena Python 2 in 3.
Med pisanjem tega članka sem odkril še en besedilni urejevalnik nano, ki mi je bil bolj všeč kot vim, zato ga namestimo:
apt install nanoUporabljati ga je lažje kot vim, poleg tega ima nano bolj prijazen vmesnik. Na Android napravi je vim vseeno bolj priročen.
HelloWorld v Pythonu v Termux
Na splošno bi se lahko brez tega koraka obšli, a namestiti Python v Termux in ne napisati HelloWorld je po mojem mnenju neprimerno.
Ne želim učiti nikogar Python-a, tako da lahko tisti, ki ne znajo, enostavno kopirajo kodo (ali začnejo sami študirati, saj je gradiva dovolj), tisti pa, ki znajo, lahko tudi sami kaj narediti. Obenem bom še pokazal način vnosa besedila v terminal brez urejevalnika.
cat >hello-world.py
# Če ne navedete vira (opominjam, cat 1.txt > 2.txt)
# bo cat vzel podatke iz standardnega vhodnega toka,
# drugače povedano, vpisujete iz tipkovnice.
str = ‘Hello, world!’ # dodelimo spremenljivki str vrednost "Hello, world!"
print (str) # izpišemo vrednost iz spremenljivke str na zaslon
# Ctrl + D zaključi vnos in shrani datoteko (hello-world.py)
py hello-world.py # pognamo datoteko (py je alias za python)
Če med vnosom niste opazili napake in ste že pritisnili Enter, ne boste mogli preiti na prejšnji vrstici; zato zaključite vnos s Ctrl + D (lahko tudi prekinete s Ctrl + Z) in ponovite vse od začetka. Ker smo uporabili ‘>’, bo datoteka v celoti prepisana. Iz tega razloga ne priporočam uporabe takšnega načina vnosa, če niste prepričani, da boste kodo napisali takoj brez napak.
Korak 6
Bash skripte
Bash skripte so odlična metoda za avtomatizacijo dela s terminalom. Skript je datoteka z razširitvijo .sh (razširitev ni obvezna), ki vsebuje niz terminalskih ukazov, od katerih smo nekatere že spoznali. Tukaj je , vse bi moralo delovati, vendar bodite pozorni, da je to seznam za 'odrasli' Linux, ne za Termux, tukaj pa je .
S pomočjo skriptov lahko avtomatiziramo skoraj vse monotone naloge. Naredimo najpreprostejši bash-skript, ki bo izpisal vrednost iz spremenljivke, ki jo je sam ustvaril, ponovno bom uporabil cat, vi pa lahko uporabite normalen urejevalnik besedila, tisti, ki želijo, pa se lahko preizkusijo z echo.
cat >test.sh
export str="Živjo, Habr!"
# export ustvari spremenljivko str
# in ji dodeli vrednost "Živjo, Habr!"
# Ne postavljajte presledkov pred in za '='
echo $str # Za dostop do spremenljivk pred njimi postavimo '$'
# Ctrl + D
# ./test.sh za zagon skripta, toda če to naredimo zdaj, bomo dobili napako
# za odpravo napake je treba datoteko test.sh narediti izvajalno
chmod +x test.sh
# chmod spreminja pravice dostopa (+ dodajanje / - odstranjevanje)
# '+x' pomeni, da datoteko naredimo izvajalno
./test.sh # Začnemo izvajanje našega skripta
Bash-skript z Termux:API
Naredimo že nekaj drugačnega od znamenitih HelloWorldov, a prav tako brezupnega. Naš skript bo:
- izvajal zahtevo API termux-battery-status
- shranjeval pridobljene podatke v datoteko test.txt
- izpisoval podatke iz datoteke na zaslon
- izvajal prej napisani program hello-world.py
- pridobljene podatke iz programa shranjeval v datoteko test.txt
- izpisoval podatke iz datoteke na zaslon
- prenašal podatke iz datoteke v odložišče
- izpisoval vsebino odložišča na zaslon
- izpisoval pojavna sporočila s podatki iz odložišča
Najprej ustvarimo mapo za delo in vanjo kopiramo hello-world.py kot test.py, v tej mapi pa ustvarimo datoteki test.sh in test.txt:
mkdir bashscript
cat hello-world.py >> bashscript/test.py
cd bashscript/
touch test.sh test.txt # touch ustvari datoteke
chmod +x test.shZdaj na katerikoli priročen način v datoteko test.sh zapišemo skript:
#!/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 # пункт 9Zdaj, ko smo v mapi bashscript, pišemo ./test.sh opazujemo v terminalu na Android napravi:

Tako smo napisali načrtovani bash-skript. Izpis lahko obogatimo z informacijami o izvajanju vsakega dejanja (s pomočjo echo), to pa prepuščam bralcem.
Korak 7
Naredimo vsaj nekaj koristnega
Relativno koristno
Oblikujemo tehnične zahteve
Aplikacija mora po zagonu v odložišče postaviti naključni niz iz datoteke in obvestiti o tem s pojavnim sporočilom.
Za osnovo vzamemo bash-skript, naključni niz iz datoteke bomo pridobivali s podprogramom v Pythonu. Sestavimo načrt dela skripta:
- Zaženi podprogram
- Prenesite rezultat dela podprograma v odložišče
- Izpiši pojavna sporočila
Določimo imena direktorijev in datotek aplikacije:
- Mapa rndstr v domači direktoriji
- source — datoteka, iz katere bomo jemali vrstice
- rndstr.py — podprogram, ki v konzolo izpiše naključno vrstico iz datoteke source
- rndstr.sh — datoteka skripte
Ustvarimo mapo aplikacije in se vanjo preselimo ter tam ustvarimo datoteke.
Prva dva koraka načrta skripte lahko združimo v cevovod, na koncu, z uporabo Termux:API dobimo:
#!/bin/bash
python ~/rndstr/rndstr.py | termux-clipboard-set # 1 и 2 пункты плана работы
termux-toast "OK" # 3 пункт. Выводим всплывающее сообщение "ОК"V datoteko source lahko vstavite katerikoli tekst, logično razdeljen na vrstice, jaz sem se odločil, da vstavim aforizme:
Seznam datoteke sourse
Iskrenost ni je istina. L. Laval
Izdrži i uzdrž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 velike stvari potrebno je neumorno postojano. F. Voltaire
Ako želiš da ti uvek ugode, služi samom sebi. B. Franklin
Prekomerna skromnost je ništa drugo nego skrivena ponositost. A. Chenier
Veoma pametnim ljudima počinju da ne veruju kada vide njihovu zbunjenost. F. Nietzsche
Siromaštvo ukazuje na nedostatak sredstava, a ne na nedostatak plemenitosti. D. Boccaccio
Treba se čuvati da skromnost ne dovede do ponženja. A. Bakihanov
Ko odustaje od mnogo toga, može mnogo toga da priušti. J. Chardon
Kada nam plaćaju za plemenit postupak, on nam se oduzima. N. Chamfort
Nije strašno ne dobiti ništa, ali je ružno izgubiti ono što se dobilo. Klavdije Elijan
Lakše je strpljivo podnositi ono što ne možemo ispraviti. Horacije
Umorim se čekajući, ali koliko bi bilo gore kada ne bismo imali šta da čekamo. B. Shaw
Sve dolazi na vreme, ako ljudi umeju da čekaju. F. Rabelais
Svojim strpljenjem možemo postići više nego snagom. E. Burke
Treba znati podnositi ono što se ne može izbeći. M. Montaigne
Ko je u delu hrabar, taj se ne boji reči. Sofokle
Ne volim se boriti, volim pobeđivati. B. Shaw
Užaljeni i pritisnuti mačak pretvara se u tigra. M. Cervantes
Dostojna osoba ne ide tuđim stopama. Konfučije
Veliki um će pokazati svoju snagu ne samo u umeću razmišljanja, nego i u umeću življenja. R. Emerson
Slava - nije profitabilna roba. Skupa je i loše se održava. O. Balzac
Umerenost i prikladnost u razgovorima vrede više od elokvencije. F. Bacon
Ko ne zna da ćuti, ne može ni da govori. Seneka Mlađi
Dobre manire se sastoje od malih žrtava. F. Chesterfield
Dobri čovek nije onaj ko ume da čini dobro, već onaj ko ne ume da čini zlo. V. Klučevski
Ne izgovarajte nepovratne sudove! Avgustin
Ništa previše! SolonOstalo je da kreiramo podprogram koji će izvlačiti slučajnu liniju iz datoteke source.
Napišimo algoritam rada podprograma:
- Otvaramo datoteku source
- Brojimo broj linija u otvorenoj datoteci
- Zatvaramo datoteku (nema potrebe da je bespotrebno držimo otvorenom)
- Generiramo naključne celo število znotraj števila vrstic datoteke source
- Otvaramo datoteku source
- Izpišemo vrstico pod številko naključno generiranega števila
- Zapremo datoteko
Uresničujemo algoritem v Pythonu (pišem pod Python 3.7):
import random # uvozimo za generiranje naključnih števil
import os # za pridobitev poti
path = os.path.abspath(__file__) # pridobimo neposredno pot do datoteke rndstr.py
path = os.path.dirname(path) # spremenimo v pot do direktorija
path = path + 'source' # spremenimo v pot do datoteke source
f = open(path) # odpiramo datoteko
i = 0 # ponastavimo števec
for str in f: i+=1 # štetje vrstic datoteke
f.close # zapremo datoteko
j = int(round(i * random.random())) # generiramo celo naključno število od 0 do i
f = open(path) # odpiramo datoteko
i = 0 # ponastavimo števec
for str in f: # prebiramo vrstice iz datoteke
if i == j: # če je števec vrstic enak naključno generiranemu številu
print (str, end='') # izpišemo vrstico brez preloma vrstice
break # zapustimo zanko
i+=1 # povečamo števec za 1
f.close # zapremo datotekoKo so datoteke ustvarjene in zabeležene, je potrebno dati pravice za izvajanje datoteki rndstr.sh, in ustvariti alias za hitro zagon.
alias rnst="~/rndstr/rndstr.sh"Zdaj, če vpišete v terminal rnst bomo dobili v odložišče naključen aforizem, ki ga lahko, na primer, uporabimo v komunikaciji.
Tako smo napisali vsaj nekaj koristnega. Razmeroma koristnega.
P.s.
Nameravno v zadnjem koraku nisem priložil posnetkov zaslona in nisem podrobno razložil nekaterih dejanj, temveč sem zapisal le vsebino datotek, da bi bralci imeli priložnost delati samostojno.
Na tem „Termux korak za korakom“ mislim, da je smiselno končati. Seveda so to šele prvi koraki, toda zdaj lahko napredujete naprej sami.
Sprva sem nameraval pokazati, kako uporabljati nmap, sqlmap, vendar je že brez mene veliko člankov na to temo. Če želite, da nadaljujem cikel „Termux korak za korakom“, je spodaj anketa, v komentarjih pa lahko predlagate, o čem še pisati.
Samo registrovani korisnici mogu učestvovati u anketi. , molim vas.
Nadaljevati „Termux korak za korakom“?
Da
Ne
Glasovali so 2 uporabnika. Nihče se ni vzdržal.
Izvor: habr.com





