Termux korak po korak (Deo 2)

V prejšnjem delu 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' (Poglej del 1).

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):

Termux korak po korak (Deo 2)

Nato moramo namestiti paket API v Termux konzoli:

updg # Ne pozabimo na alias-e
apt install termux-api

Za 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 wiki projekta)

Zdaj se moramo podrobneje seznaniti z pridobljenimi zmožnostmi. Največje in najbolj podrobno opis Termux:API lahko najdete na wiki projekta. 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 korak po korak (Deo 2)
  • termux-brightness
    Nastavi svetlost zaslona od 0 do 255
    Termux korak po korak (Deo 2)
  • termux-toast
    Prikaže začasno pojavna obvestila
    Termux korak po korak (Deo 2)
  • termux-torch
    Vklopi svetilko
    Termux korak po korak (Deo 2)
  • termux-wifi-scaninfo
    Vrača informacije o zadnjem skeniranju omrežij Wi-Fi
    Termux korak po korak (Deo 2)

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 python2

Sedaj 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 nano

Uporabljati 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)

Termux korak po korak (Deo 2)

Č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 seznam večine ukazov, vse bi moralo delovati, vendar bodite pozorni, da je to seznam za 'odrasli' Linux, ne za Termux, tukaj pa je odličen material o bash skriptah.

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

Termux korak po korak (Deo 2)

Bash-skript z Termux:API

Naredimo že nekaj drugačnega od znamenitih HelloWorldov, a prav tako brezupnega. Naš skript bo:

  1. izvajal zahtevo API termux-battery-status
  2. shranjeval pridobljene podatke v datoteko test.txt
  3. izpisoval podatke iz datoteke na zaslon
  4. izvajal prej napisani program hello-world.py
  5. pridobljene podatke iz programa shranjeval v datoteko test.txt
  6. izpisoval podatke iz datoteke na zaslon
  7. prenašal podatke iz datoteke v odložišče
  8. izpisoval vsebino odložišča na zaslon
  9. 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.sh

Zdaj 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 # пункт 9

Zdaj, ko smo v mapi bashscript, pišemo ./test.sh opazujemo v terminalu na Android napravi:

Termux korak po korak (Deo 2)

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:

  1. Zaženi podprogram
  2. Prenesite rezultat dela podprograma v odložišče
  3. 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! Solon

Ostalo je da kreiramo podprogram koji će izvlačiti slučajnu liniju iz datoteke source.
Napišimo algoritam rada podprograma:

  1. Otvaramo datoteku source
  2. Brojimo broj linija u otvorenoj datoteci
  3. Zatvaramo datoteku (nema potrebe da je bespotrebno držimo otvorenom)
  4. Generiramo naključne celo število znotraj števila vrstic datoteke source
  5. Otvaramo datoteku source
  6. Izpišemo vrstico pod številko naključno generiranega števila
  7. 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 datoteko

Ko 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. Prijavite se, molim vas.

Nadaljevati „Termux korak za korakom“?

  • Da

  • Ne

Glasovali so 2 uporabnika. Nihče se ni vzdržal.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster