Termux krok za krokom (Časť 2)

V minulej časti 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“ (Pozri Časť 1).

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

Termux krok za krokom (Časť 2)

Potom musíme nainštalovať balík API v konzole Termuxu:

updg # Nezabúdame na aliasy
apt install termux-api

Na 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. wiki projektu)

Teraz sa oplatí bližšie spoznať získané možnosti. Najnovší a podrobný opis Termux:API nájdete na wiki projektu. 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 krok za krokom (Časť 2)
  • termux-brightness
    Nastavuje jas obrazovky od 0 do 255
    Termux krok za krokom (Časť 2)
  • termux-toast
    Zobrazuje dočasnú vyskakovaciu notifikáciu
    Termux krok za krokom (Časť 2)
  • termux-torch
    Zapína baterku
    Termux krok za krokom (Časť 2)
  • termux-wifi-scaninfo
    Vracia informácie o poslednom skenovaní Wi-Fi sietí
    Termux krok za krokom (Časť 2)

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 python2

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

Použí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)

Termux krok za krokom (Časť 2)

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 zoznam väčšiny príkazov, všetko by malo fungovať, ale majte na pamäti, že toto je zoznam pre „dospelý“ Linux, nie pre Termux, a tu je jednoducho skvelý materiál o bash skriptoch.

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

Termux krok za krokom (Časť 2)

Bash skript s Termux:API

Napíšme už niečo odlišné od známych HelloWorld, ale rovnako zbytočné. Náš skript bude:

  1. vykonávať požiadavku API termux-battery-status
  2. uložiť získané údaje do súboru test.txt
  3. vypisovať údaje zo súboru na obrazovku
  4. vykonať predtým naprogramovaný program hello-world.py
  5. získané údaje z programu zapísať do súboru test.txt
  6. vypisovať údaje zo súboru na obrazovku
  7. presunúť údaje zo súboru do schránky
  8. vypisovať na obrazovku obsah schránky
  9. 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.sh

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

Teraz sa nachádzajúc v priečinku bashscript napíšeme ./test.sh pozorujeme v termináli na Android zariadení:

Termux krok za krokom (Časť 2)

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:

  1. Spustiť podprogram
  2. Preneste výsledok podprogramu do schránky
  3. 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ón

Zostáva nám vytvoriť podprogram, ktorý extrahuje náhodný riadok zo súboru source.
Poďme si rozpísať algoritmus fungovania podprogramu:

  1. Otvoríme súbor source
  2. Spočítame počet riadkov v otvorenom súbore
  3. Zatvoríme súbor (nemá zmysel ho nechať otvorený na zbytočne dlhý čas)
  4. Generujeme náhodné celé číslo v rámci počtu riadkov súboru source
  5. Otvoríme súbor source
  6. Vytiahneme riadok s číslom z náhodne vygenerovaného čísla
  7. 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úbor

Potom, č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. Prihláste sa, prosím.

Pokračovať v „Termux krok za krokom“?

  • Áno

  • Nie

Hlasovalo 2 používateľov. Zdržal sa nikto.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster