V seznámili jsme se se základními příkazy Termuxu, nastavili SSH spojení s PC, naučili se vytvářet aliasy a nainstalovali několik užitečných utilit. Tentokrát uděláme další krok, budeme:
- zkoumat Termux:API
- nainstalujeme Python a nano, a napíšeme "Hello, world!" v Pythonu
- seznámíme se s bash skripty a napíšeme skript používající Termux:API
- použijeme bash skript, Termux:API a Python k napsání jednoduchého programu
Jelikož nyní rozumíme, co jednotlivé příkazy dělají, od příštího kroku nebudu podrobně popisovat každou akci, ale tam, kde mohou být potíže, vysvětlím je jistě.
Často používám aliasy, proto jsou zde zkrácené příkazy uvedeny:
alias updg='apt update && apt upgrade'
alias py='python'Plán je připraven, můžeme začít! A nezapomínejte na "kouzelný Tab" ().
Krok 4
Ponořme se hlouběji do králičí nory Termux:API
API, jak mnoho se v tomto slově spojilo pro srdce kodéra
Pokud se nevěnujeme tématu Termux:API, mohli bychom naše kroky shrnout do prostého vyprávění nějaké brožury typu "Linux pro začátečníky", jak bylo správně poznamenáno v komentářích k první části.
Nejprve nainstalujeme Termux:API z Google Play Marketu (po tom není na škodu Termux restartovat):

Dále potřebujeme nainstalovat balíček API v konsoli Termuxu:
updg # Nezapomínejte na aliasy
apt install termux-apiK experimentům používám Android 5.1.1, pro majitele Androidu 7 je potřeba "ochránit" Termux: API, přejděte do 'Nastavení' > 'Ochráněné aplikace', jinak budou volání API, jako například termux-battery-status, zůstávat viset. (Viz )
Nyní je čas se blíže seznámit s získanými možnostmi. Nejnovější a nejpodrobnější popis Termux:API najdete na . Snažím se vybrat to nejpřehlednější a nejzajímavější, co vám pomůže získat praxi pro samostatnou práci v budoucnu.
Několik příkladů Termux:API
- termux-battery-status
Vrací stav baterie

- termux-brightness
Nastavuje jas obrazovky od 0 do 255

- termux-toast
Zobrazuje dočasné vyskakovací oznámení

- termux-torch
Zapíná svítilnu

- termux-wifi-scaninfo
Vrací informace o posledním skenování Wi-Fi sítí

Není těžké si všimnout, že vracené hodnoty jsou řetězce, slovníky, seznamy slovníků, tedy datové typy, se kterými si Python skvěle poradi, a tak jej dalším krokem nainstalujeme.
Krok 5
Nainstalujeme Python a nano
Pro instalaci Pythonu zadejte v terminálu:
updg
apt install python
apt install python2Nyní máme nainstalované Python 2 a 3.
Během práce na článku jsem objevil další textový editor nano, který se mi líbí více než vim, pojďme ho nainstalovat:
apt install nanoPoužívání je jednodušší než vim a nano má přívětivější rozhraní. Na zařízení Android je však přece jen pohodlnější vim.
HelloWorld na Pythonu v Termuxu
V podstatě by bylo možné se bez tohoto bodu obejít, ale nainstalovat Python v Termuxu a nenapsat HelloWorld, to mi přijde nevhodné.
Nemám za cíl učit někoho Pythonu, takže ti, co neznají, mohou jednoduše zkopírovat kód (nebo začít studovat samostatně, literatury je dost), a ti, co vědí, mohou si také něco vytvořit. A já "pod hluchem" ještě ukážu způsob, jak zadávat text v terminálu bez editoru.
cat >hello-world.py
# Pokud neudáte zdroj (připomínám cat 1.txt > 2.txt)
# pak cat vezme data z standardního vstupu,
# jednoduše řečeno, to, co se zadalo z klávesnice.
str = 'Hello, world!' # přiřazujeme proměnné str hodnotu "Hello, world!"
print (str) # vypíšeme na obrazovku hodnotu z proměnné str
# Ctrl + D ukončí zadávání a zapíše soubor (hello-world.py)
py hello-world.py # spustíme soubor (py je alias pro python)
Pokud během zadávání jste si nevšimli chyby a už jste stiskli Enter, nelze se vrátit na předchozí řádek, pro to musíte ukončit zadávání stiskem Ctrl + D (můžete také zcela přerušit Ctrl + Z) a vše opakovat od začátku. Jelikož jsme použili '>', soubor bude kompletně přepsán. Z tohoto důvodu nedoporučuji používat tuto metodu zadávání, pokud si nejste jisti, že napíšete kód okamžitě bez chyb.
Krok 6
Bash skripty
Bash skripty jsou skvělý způsob, jak automatizovat práci s terminálem. Skript je soubor s příponou .sh (přípona není povinná), obsahující sadu příkazů terminálu, z nichž některé jsme již probrali. Tady , vše by mělo fungovat, ale mějte na paměti, že tento seznam je pro „dospělý“ Linux, a ne pro Termux, tady je prostě .
Pomocí skriptů lze automatizovat prakticky všechny monotónní úkoly. Napišme jednoduchý bash skript, který vytiskne hodnotu ze své vlastní proměnné, použiji opět cat, ale můžete použít normální textový editor, a ti, kteří se chtějí procvičit, mohou použít echo.
cat >test.sh
export str="Ahoj, Habr!"
# export vytvoří proměnnou str
# a přiřadí ji hodnotu "Ahoj, Habr!"
# Nezapomeňte nepoužívat mezery před a za ‘=’
echo $str # Pro přístup k proměnným před ně umístíme ‘$’
# Ctrl + D
# ./test.sh pro spuštění skriptu, ale pokud to teď uděláte, objeví se chyba
# abyste se chybě vyhnuli, je třeba udělat soubor test.sh spustitelným
chmod +x test.sh
# chmod mění oprávnění (+ přidat / - odebrat)
# ‘+x’ znamená, že děláme soubor spustitelným
./test.sh # Spouštíme náš skript
Bash skript s Termux:API
Napišme už něco jiného než proslulé HelloWorldy, ale stejně zbytečné. Náš skript bude:
- provádět API požadavek termux-battery-status
- ukládat získaná data do souboru test.txt
- vypisovat data ze souboru na obrazovku
- spouštět dříve napsaný program hello-world.py
- získaná data z programu zapisovat do souboru test.txt
- vypisovat data ze souboru na obrazovku
- přesouvat data ze souboru do schránky
- vypisovat obsah schránky na obrazovku
- vypisovat vyskakovací zprávu s daty ze schránky
Nejprve vytvořme adresář pro práci a zkopírujme tam hello-world.py jako test.py, vytvoříme v tomto adresáři soubory test.sh a test.txt:
mkdir bashscript
cat hello-world.py >> bashscript/test.py
cd bashscript/
touch test.sh test.txt # touch vytváří soubory
chmod +x test.shNyní jakýmkoli pohodlným způsobem zapíšeme skript do souboru 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 # пункт 9Nyní se v adresáři bashscript píšeme ./test.sh pozorujeme v terminálu na zařízení Android:

Tak jsme napsali naplánovaný bash skript. Můžeme ho doplnit výpisem informací o provedení každé akce do konzole (pomocí echo), to nechám na čtenářích.
Krok 7
Uděláme něco užitečného
Relativně užitečné
Sestavíme technické zadání
Aplikace by měla po spuštění vložit do schránky náhodný řetězec ze souboru a upozornit na to vyskakovací zprávou.
Za základ vezmeme bash skript, náhodný řetězec ze souboru budeme získávat pomocí podprogramu v Pythonu. Sestavíme plán práce skriptu:
- Spustit podprogram
- Přenést výsledek podprogramu do schránky
- Zobrazit vyskakovací zprávu
Určíme názvy adresáře a souborů aplikace:
- složka rndstr v domovském adresáři
- source — soubor, ze kterého budeme nabírat řádky
- rndstr.py — podprogram, který vypisuje náhodný řádek ze souboru source do konzole
- rndstr.sh — soubor skriptu
Vytváříme adresář aplikace a po přechodu do něj tam vytváříme soubory.
První dva body plánu skriptu lze spojit pomocí pipe, což výsledně, používající Termux:API, vypadá takto:
#!/bin/bash
python ~/rndstr/rndstr.py | termux-clipboard-set # 1 и 2 пункты плана работы
termux-toast "OK" # 3 пункт. Выводим всплывающее сообщение "ОК"Do souboru source můžete umístit jakýkoliv text logicky rozdělený na řádky, rozhodl jsem se vložit aforismy:
Výpis souboru source
Upřímnost není pravda. L. Lavelle
Vydrž a ovládej se. Epiktét
Noble je pouze to, co je nezištné. J. La Bruyère
Buď rozumně odvážný. B. Gracian
Laskavost je lepší než krása. G. Heine
Pro velké skutky je nezbytná neúnavná vytrvalost. F. Voltaire
Pokud chceš, aby ti vždy vyhověli, slouž si sám. B. Franklin
Nadměrná skromnost je nic jiného než skrytá pýcha. A. Chaünee
Velice chytrým lidem začínají nevěřit, když vidí jejich rozpačitost. F. Nietzsche
Chudoba ukazuje na nedostatek prostředků, nikoli na nedostatek ušlechtilosti. D. Boccaccio
Musíme se vyvarovat přehánění skromnosti do míry ponížení. A. Bakihanov
Kdo se vzdá mnohého, může si dovolit mnohé. J. Chardon
Když nám platí za ušlechtilý čin, ten nám byl odejmut. N. Chamfort
Nebýt ničeho - není děsivé, ale přijít o to, co máme, je ošklivé. Klaudius Elian
Je snazší trpělivě snášet to, co nemůžeme napravit. Horatius
Unavuje tě čekání, ale jaké by to bylo horší, kdyby nebylo na co čekat. B. Shaw
Všechno přichází v pravý čas, pokud lidé umějí čekat. F. Rabelais
Našim trpěním můžeme dosáhnout více než silou. E. Burke
Musíme umět snášet to, čemu se nelze vyhnout. M. Montaigne
Kdo je odvážný ve věci, toho slova neodradí. Sofoklés
Neradím se bít, raději vítězím. B. Shaw
Uražená a přitlačená kočka se mění v tygra. M. Cervantes
Důstojný člověk nekráčí ve stopách ostatních lidí. Konfucius
Velký rozum prokáže svou sílu nejen v umění myslet, ale i v umění žít. R. Emerson
Sláva je nevýhodný majetek. Je drahá, ale špatně se udržuje. O. Balzac
Zdrženlivost a vhodnost v rozhovorech stojí více než eloquence. F. Bacon
Kdo neumí mlčet, ten ani hovořit nedokáže. Seneca Mladší
Dobré chování spočívá v malých obětech. F. Chesterfield
Dobrý člověk není ten, kdo umí konat dobro, ale ten, kdo neumí konat zlo. V. Klyuchevsky
Nepronášejte nevratná soudy! Augustin
Nic příliš! SolónZbývá nám vytvořit podprogram, který vytáhne náhodný řádek z souboru source.
Vypracujeme algoritmus pro práci podprogramu:
- Otevíráme soubor source
- Počítáme počet řádků v otevřeném souboru
- Zavíráme soubor (nemusíme ho zbytečně držet otevřený)
- Generujeme náhodné celé číslo v rozsahu počtu řádků souboru source
- Otevíráme soubor source
- Vytiskneme řádek pod číslem generovaného čísla
- Zavřeme soubor
Realizujeme algoritmus v Pythonu (píšu pod Python 3.7):
import random # importujeme pro generování náhodných čísel
import os # pro získání cesty
path = os.path.abspath(__file__) # získáme přímou cestu k souboru rndstr.py
path = os.path.dirname(path) # převedeme na cestu k adresáři
path = path + 'source' # převedeme na cestu k souboru source
f = open(path) # otevřeme soubor
i = 0 # nulujeme čítač
for str in f: i+=1 # počítáme řádky souboru
f.close # zavřeme soubor
j = int(round(i * random.random())) # generujeme celé náhodné číslo od 0 do i
f = open(path) # otevřeme soubor
i = 0 # nulujeme čítač
for str in f: # iterujeme řádky ze souboru
if i == j: # pokud je čítač řádků roven generovanému číslu
print (str, end='') # vytiskneme řádek bez přechodu na nový
break # vyjdeme z cyklu
i+=1 # zvyšujeme čítač o 1
f.close # zavřeme souborPo vytvoření a zapsání souborů je třeba přidělit souboru práva na spuštění rndstr.sh, a vytvořit alias pro rychlé spuštění.
alias rnst="~/rndstr/rndstr.sh"Nyní, když zadáme do terminálu rnst dostaneme do schránky náhodný aforismus, který například můžeme použít v korespondenci.
Tím jsme napsali alespoň něco užitečného. Relativně užitečného.
P.s.
Záměrně jsem v posledním kroku nezahrnul screenshoty a nepodrobně popsal některé kroky, uvedl jsem pouze obsah souborů, aby měli čtenáři možnost pracovat samostatně.
Na tomto „Termux krok za krokem“, myslím, by stálo za to skončit. Samozřejmě to jsou jen první kroky, ale nyní můžete pokračovat sami.
Původně jsem plánoval v tomto cyklu ukázat, jak používat nmap, sqlmap, ale bez mě již existuje mnoho článků na toto téma. Pokud máte chuť, abych pokračoval v cyklu „Termux krok za krokem“, níže je anketa a v komentářích můžete navrhovat, o čem ještě psát.
Pouze registrovaní uživatelé se mohou účastnit ankety. , prosím.
Pokračovat v „Termux krok za krokem“?
Ano
Ne
Hlasovali 2 uživatelé. Zdržel se nikdo.
Zdroj: habr.com





