Termux krok za krokem (Část 2)

V předchozí části 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" (viz část 1).

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

Termux krok za krokem (Část 2)

Dále potřebujeme nainstalovat balíček API v konsoli Termuxu:

updg # Nezapomínejte na aliasy
apt install termux-api

K 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 wiki projektu)

Nyní je čas se blíže seznámit s získanými možnostmi. Nejnovější a nejpodrobnější popis Termux:API najdete na wiki projektu. 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 krok za krokem (Část 2)
  • termux-brightness
    Nastavuje jas obrazovky od 0 do 255
    Termux krok za krokem (Část 2)
  • termux-toast
    Zobrazuje dočasné vyskakovací oznámení
    Termux krok za krokem (Část 2)
  • termux-torch
    Zapíná svítilnu
    Termux krok za krokem (Část 2)
  • termux-wifi-scaninfo
    Vrací informace o posledním skenování Wi-Fi sítí
    Termux krok za krokem (Část 2)

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 python2

Nyní 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 nano

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

Termux krok za krokem (Část 2)

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 je seznam většiny příkazů, 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ě skvělý materiál o bash skriptech.

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

Termux krok za krokem (Část 2)

Bash skript s Termux:API

Napišme už něco jiného než proslulé HelloWorldy, ale stejně zbytečné. Náš skript bude:

  1. provádět API požadavek termux-battery-status
  2. ukládat získaná data do souboru test.txt
  3. vypisovat data ze souboru na obrazovku
  4. spouštět dříve napsaný program hello-world.py
  5. získaná data z programu zapisovat do souboru test.txt
  6. vypisovat data ze souboru na obrazovku
  7. přesouvat data ze souboru do schránky
  8. vypisovat obsah schránky na obrazovku
  9. 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.sh

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

Nyní se v adresáři bashscript píšeme ./test.sh pozorujeme v terminálu na zařízení Android:

Termux krok za krokem (Část 2)

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:

  1. Spustit podprogram
  2. Přenést výsledek podprogramu do schránky
  3. 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ón

Zbývá nám vytvořit podprogram, který vytáhne náhodný řádek z souboru source.
Vypracujeme algoritmus pro práci podprogramu:

  1. Otevíráme soubor source
  2. Počítáme počet řádků v otevřeném souboru
  3. Zavíráme soubor (nemusíme ho zbytečně držet otevřený)
  4. Generujeme náhodné celé číslo v rozsahu počtu řádků souboru source
  5. Otevíráme soubor source
  6. Vytiskneme řádek pod číslem generovaného čísla
  7. 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 soubor

Po 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. Přihlaste se, prosím.

Pokračovat v „Termux krok za krokem“?

  • Ano

  • Ne

Hlasovali 2 uživatelé. Zdržel se nikdo.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster