V sme sa zoznámili so základnými príkazmi Termuxu, nastavili sme SSH pripojenie k PC, naučili sme sa vytvárať aliasy a nainštalovali sme niekoľko užitočných utilít. Tentoraz pre nás čaká ďalší krok, spoločne:
- zistíme o Termux:API
- nainstalujeme Python a nano, ako aj napíšeme „Hello, world!“ v Pythone
- zistíme o bash skriptoch a napíšeme skript využívajúci Termux:API
- použitím bash skriptu, Termux:API a Pythona napíšeme jednoduchý program
Keďže teraz chápeme, čo robia zadané príkazy, od tohto kroku nebudem podrobne opisovať každú akciu, ale tam, kde môžu vzniknúť ťažkosti, budem nevyhnutne vysvetľovať.
Často používam aliasy, preto sú tu zobrazené skratky použité v tejto časti:
alias updg='apt update && apt upgrade'
alias py='python'Plán je hotový, môžeme začať! A samozrejme nezabúdajte na „magický Tab“ ().
Krok 4
Ponárame sa do králičej diery Termux:API
API, koľko sa v tomto slove spojilo pre srdce kodéra
Ak sa vyhneme téme Termux:API, všetky naše kroky by sa dali zhrnúť do jednoduchého prepisu nejakej brožúry, ako je napríklad „Linux pre začiatočníkov“, ako bolo správne poznamenané v komentároch k prvej časti.
Na začiatok nainštalujeme Termux:API z Google Play Marketu (po tom by nebol zbytočný reštart Termuxu):

Potom musíme nainštalovať balík API v konzole Termuxu:
updg # Nezabúdame na aliasy
apt install termux-apiNa experimenty používam Android 5.1.1, pre vlastníkov Androidu 7 treba „ochrániť“ Termux: API, vstúpením do 'Nastavenia' > 'Chránené aplikácie', inak budú volania API, ako napríklad termux-battery-status, uviaznu. (Pozri. )
Teraz sa oplatí bližšie spoznať získané možnosti. Najnovší a podrobný opis Termux:API nájdete na . Ja sa však pokúsim vybrať to najilustratívnejšie a najzaujímavejšie, čo umožní nadobudnúť prax na samostatnú prácu v budúcnosti.
Niekoľko príkladov Termux:API
- termux-battery-status
Vracia stav batérie

- termux-brightness
Nastavuje jas obrazovky od 0 do 255

- termux-toast
Zobrazuje dočasnú vyskakovaciu notifikáciu

- termux-torch
Zapína baterku

- termux-wifi-scaninfo
Vracia informácie o poslednom skenovaní Wi-Fi sietí

Nie je ťažké si všimnúť, že vrátené hodnoty sú reťazce, slovníky, zoznamy slovníkov, teda typy dát, s ktorými Python výborne pracuje, takže naším ďalším krokom bude jeho nainštalovanie.
Krok 5
Nainštalujeme Python a nano
Na nainštalovanie Pythonu napíšeme do terminálu:
updg
apt install python
apt install python2Teraz máme nainštalované Python 2 a 3.
Počas písania článku som objavil ďalší textový editor nano, ktorý sa mi zapáčil viac než vim, poďme ho nainštalovať:
apt install nanoPoužíva sa jednoduchšie ako vim a nano má priateľskejší rozhranie. Na zariadení s Androidom je však stále pohodlnejší vim.
HelloWorld na Pythone v Termux
V podstate by sa tejto položky dalo aj vyhnúť, ale nainštalovať Python v Termux a nenapísať HelloWorld mi príde nevhodné.
Nemám za cieľ učiť niekoho Pythonu, takže tí, ktorí nevedia, môžu jednoducho skopírovať kód (alebo začať študovať samostatne, literatúry je dosť), a tí, ktorí vedia, môžu si niečo naprogramovať sami. A ja „len tak mimochodom“ ešte ukážem spôsob, ako zadávať text v termináli bez editora.
cat >hello-world.py
# Ak neuvádzate zdroj (pripomínam cat 1.txt > 2.txt)
# tak cat bude brať údaje z normálneho vstupného prúdu,
# zjednodušene povedané, to, čo zadáte z klávesnice.
str = ‘Hello, world!’ # priradíme premennej str hodnotu "Hello, world!"
print (str) # vypíšeme na obrazovku hodnotu z premennej str
# Ctrl + D na ukončenie zadávania a uloženie súboru (hello-world.py)
py hello-world.py # spustíme súbor (py je alias pre python)
Ak ste počas zadávania nezaregistrovali chybu a už ste stlačili Enter, na predchádzajúci riadok sa už nedostanete, preto ukončite zadávanie stlačením Ctrl + D (môžete to úplne prerušiť Ctrl + Z) a zopakujte všetko odznova. Keďže sme použili ‘>’, súbor bude úplne prepísaný. Z tohto dôvodu neodporúčam používať takúto metódu zadávania, ak si nie ste istí, že napíšete kód naraz bez chýb.
Krok 6
Bash skripty
Bash skripty sú skvelým spôsobom, ako automatizovať prácu s terminálom. Skript je súbor s príponou .sh (prípona nie je nutná) obsahujúci súbor príkazov terminálu, pričom časť z nich sme už študovali. Tu je , všetko by malo fungovať, ale majte na pamäti, že toto je zoznam pre „dospelý“ Linux, nie pre Termux, a tu je jednoducho .
Pomocou skriptov môžeme automatizovať prakticky všetky monotónne činnosti. Napíšeme jednoduchý bash skript, ktorý vypisuje hodnotu z premennej, ktorú sám vytvoril; ja opäť využijem cat, vy môžete použiť normálny textový editor, a tí, ktorí sa chcú trocha potrápiť, môžu použiť echo.
cat >test.sh
export str="Ahoj, Habr!"
# export vytvára premennú str
# a priraďuje jej hodnotu "Ahoj, Habr!"
# Nedávajte medzery pred a za '='
echo $str # Pre prístup k premenným pred nimi sa uvádza '$'
# Ctrl + D
# ./test.sh na spustenie skriptu, ale ak to teraz urobíte, nastane chyba
# na odstránenie chyby je potrebné urobiť súbor test.sh vykonateľným
chmod +x test.sh
# chmod mení prístupové práva (+ pridať / - odstrániť)
# ‘+x’ znamená, že robíme súbor vykonateľným
./test.sh # Spúšťame vykonávanie nášho skriptu
Bash skript s Termux:API
Napíšme už niečo odlišné od známych HelloWorld, ale rovnako zbytočné. Náš skript bude:
- vykonávať požiadavku API termux-battery-status
- uložiť získané údaje do súboru test.txt
- vypisovať údaje zo súboru na obrazovku
- vykonať predtým naprogramovaný program hello-world.py
- získané údaje z programu zapísať do súboru test.txt
- vypisovať údaje zo súboru na obrazovku
- presunúť údaje zo súboru do schránky
- vypisovať na obrazovku obsah schránky
- zobraziť vyskakovaciu správu s údajmi zo schránky
Najprv si vytvoríme priečinok na prácu a skopírujeme tam hello-world.py ako test.py, vytvoríme v tomto priečinku súbory test.sh a test.txt:
mkdir bashscript
cat hello-world.py >> bashscript/test.py
cd bashscript/
touch test.sh test.txt # touch vytvára súbory
chmod +x test.shTeraz akýmkoľvek vhodným spôsobom zapíšeme skript do súboru 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 # пункт 9Teraz sa nachádzajúc v priečinku bashscript napíšeme ./test.sh pozorujeme v termináli na Android zariadení:

Napísali sme plánovaný bash skript. Môžeme obohatiť jeho výstup o informácie o vykonávaní každého kroku (pomocou echo), to nechám na čitateľov.
Krok 7
Urobme aspoň niečo užitočné
Relatívne užitočné
Vytvoríme technickú úlohu
Aplikácia by mala po spustení umiestniť do schránky náhodný riadok zo súboru a informovať o tom vyskakovacou správou.
Za základ vezmeme bash skript, náhodný riadok zo súboru budeme získavať pomocou podprogramu v Pythone. Vypracujeme plán práce skriptu:
- Spustiť podprogram
- Preneste výsledok podprogramu do schránky
- Zobrazte vyskakovaciu správu
Definujme názvy adresára a súborov aplikácie:
- adresár rndstr v domovskom adresári
- source — súbor, z ktorého budeme brať riadky
- rndstr.py — podprogram, ktorý zobrazuje náhodný riadok zo súboru source v konzole
- rndstr.sh — súbor skriptu
Vytvárame adresár aplikácie a presúvame sa doňho, kde vytvoríme súbory.
Prvé dva body plánu skriptu môžeme spojiť do pipeline, a nakoniec, pomocou Termux:API dostaneme:
#!/bin/bash
python ~/rndstr/rndstr.py | termux-clipboard-set # 1 и 2 пункты плана работы
termux-toast "OK" # 3 пункт. Выводим всплывающее сообщение "ОК"Do súboru source môžete vložiť akýkoľvek text logicky rozdelený na riadky, rozhodol som sa vložiť aforizmy:
Výpis súboru sourse
Úprimnosť nie je pravda. L. Lavel
Trpelivosť a zdržanlivosť. Epiktét
Noble je len to, čo je bezinteresné. J. La Bruyère
Buď rozvážne odvážny. B. Gracián
Dobrota je lepšia ako krása. G. Heine
Pre veľké činy je potrebná neúnavná vytrvalosť. F. Voltaire
Ak chceš, aby ti stále vychádzali v ústrety, slúž si sám. B. Franklin
Nadmierna skromnosť je nič iné ako skrytá pýcha. A. Chénier
Veľmi inteligentným ľuďom sa prestáva dôverovať, ak vidia ich rozpak. F. Nietzsche
Chudoba ukazuje na nedostatok prostriedkov, nie na nedostatok ušľachtilosti. D. Boccaccio
Treba si dávať pozor, aby skromnosť neprešla do poníženia. A. Bakihanov
Kto sa vzdá mnohého, môže si dovoliť mnohé. J. Chardon
Keď nám zaplatia za ušľachtilý čin, ten nám berú. N. Chamfort
Nedostať vôbec - nie je strašné, ale prísť o to, čo máme, je urážlivé. Klaudius Elian
Je ľahšie trpezlivo znášať to, čo nemôžeme opraviť. Horác
Unavuješ sa čakať, ale ako by bolo horšie, keby nebolo na čo čakať. B. Shaw
Všetko prichádza včas, ak sa ľudia dokážu čakať. F. Rabelais
Svojou trpezlivosťou môžeme dosiahnuť viac než silou. E. Burke
Musíme vedieť znášať to, čomu sa nemožno vyhnúť. M. Montaigne
Kto je v čine odvážny, toho slová nevyplašia. Sofokles
Nemám rád bojovať, rád víťazím. B. Shaw
Prenasledovaný a pritlačený k múru, sa mačka mení na tigra. M. Cervantes
Dôstojný človek nekráča po stopách iných ľudí. Konfúcius
Veľký rozum prejaví svoju silu nielen v umení myslieť, ale aj v umení žiť. R. Emerson
Sláva je nevýhodný tovar. Stojí veľa, zle sa uchováva. O. Balzac
Zdržanlivosť a primeranosť v rozhovoroch majú väčšiu hodnotu ako výrečnosť. F. Bacon
Kto nevie mlčať, ten ani nie je schopný hovoriť. Seneca Mladší
Dobré správanie spočíva v malých obetiach. F. Chesterfield
Dobrý človek nie je ten, kto vie robiť dobro, ale ten, kto nevie robiť zlo. V. Kľúčevský
Nepronášaj neopraviteľné súdy! Augustín
Nič priveľa! SolónZostáva nám vytvoriť podprogram, ktorý extrahuje náhodný riadok zo súboru source.
Poďme si rozpísať algoritmus fungovania podprogramu:
- Otvoríme súbor source
- Spočítame počet riadkov v otvorenom súbore
- Zatvoríme súbor (nemá zmysel ho nechať otvorený na zbytočne dlhý čas)
- Generujeme náhodné celé číslo v rámci počtu riadkov súboru source
- Otvoríme súbor source
- Vytiahneme riadok s číslom z náhodne vygenerovaného čísla
- Zatvoríme súbor
Implementujeme algoritmus v Pythone (píšem pre Python 3.7):
import random # importujeme na generovanie náhodných čísel
import os # na získanie cesty
path = os.path.abspath(__file__) # získame úplnú cestu k súboru rndstr.py
path = os.path.dirname(path) # prevedieme na cestu k priečinku
path = path + 'source' # prevedieme na cestu k súboru source
f = open(path) # otvoríme súbor
i = 0 # vynulujeme počítadlo
for str in f: i+=1 # počítame riadky súboru
f.close # zatvoríme súbor
j = int(round(i * random.random())) # generujeme celé náhodné číslo od 0 do i
f = open(path) # otvoríme súbor
i = 0 # vynulujeme počítadlo
for str in f: # prechádzame riadkami súboru
if i == j: # ak je počítadlo riadkov rovné vygenerovanému číslu
print (str, end='') # vytlačíme riadok bez prechodu na novú
break # vystúpime z cyklu
i+=1 # zvyšujeme počítadlo o 1
f.close # zatvoríme súborPotom, čo boli súbory vytvorené a zapísané, je potrebné nastaviť práva na vykonávanie súboru rndstr.sh, a vytvoriť alias pre rýchle spustenie.
alias rnst="~/rndstr/rndstr.sh"Teraz, keď do terminálu zadáme rnst dostaneme do schránky náhodný aforizmus, ktorý môžeme napríklad využiť v komunikácii.
Napísali sme aspoň niečo užitočné. Relatívne užitočné.
P.s.
Úmyselne som na poslednom kroku nezobrazoval screenshoty a podrobne nerozoberal niektoré akcie, popísal som iba obsah súborov, aby čitatelia mali možnosť pracovať samostatne.
Na tomto „Termux krok za krokom“ si myslím, že by sme mali skončiť. Samozrejme, sú to iba prvé kroky, ale teraz môžete pokračovať sami.
Pôvodne som plánoval ukázať v tomto cykle, ako používať nmap, sqlmap, ale bez mňa už existuje veľa článkov na túto tému. Ak máte záujem, aby som pokračoval v cykle „Termux krok za krokom“, nájdete nižšie anketu, kde môžete navrhnúť aj iné témy.
Len registrovaní používatelia sa môžu zúčastniť prieskumu. , prosím.
Pokračovať v „Termux krok za krokom“?
Áno
Nie
Hlasovalo 2 používateľov. Zdržal sa nikto.
Zdroj: habr.com





