Termux krok za krokom (časť 2)

В posledná časť Zoznámili sme sa so základnými príkazmi Termuxu, nastavili SSH spojenie s PC, naučili sme sa vytvárať aliasy a nainštalovali niekoľko užitočných utilít. Tentokrát musíme ísť ešte ďalej, sme s vami:

  • prečítajte si o Termux:API
  • Nainštalujte si Python a nano a tiež napíšme „Ahoj, svet!“ v Pythone
  • dozvedieť sa o bash skriptoch a napísať skript pomocou Termux:API
  • Napíšme jednoduchý program pomocou bash skriptu, Termux:API a Pythonu

Keďže už chápeme, čo zadané príkazy robia, od ďalšieho kroku nebudem každú akciu popisovať tak podrobne, ale kde môžu byť ťažkosti, určite vysvetlím.

Často používam aliasy, takže skratky použité v tejto časti sú zobrazené tu:

alias updg='apt update && apt upgrade'
alias py='python'

Plán je pripravený, môžeme začať! A samozrejme nezabudnite na „magickú kartu“ (Pozri časť 1).

Krok 4

Potápanie v Termuxe: Králičia diera API

API, koľko sa v tomto slove pre srdce kódera zlúčilo

Ak sa nedotkneme témy Termux:API, potom by sa všetky naše kroky mohli zredukovať na jednoduché prerozprávanie nejakej brožúry ako „Linux pre nechápavých“, ako bolo správne uvedené v komentároch k prvej časti.

Najprv si nainštalujte Termux:API z Google Play Market (potom nezaškodí reštartovanie Termuxu):

Termux krok za krokom (časť 2)

Ďalej musíme nainštalovať balík API do konzoly Termux:

updg # Не забываем про alias’ы
apt install termux-api

Na experimenty používam Android 5.1.1, pre vlastníkov Androidu 7 musíte „chrániť“ Termux:API tak, že prejdete do Nastavenia > Chránené aplikácie, inak volania API ako termux-battery-status, zamrzne. (Cm. wiki projektu)

Teraz je čas bližšie sa pozrieť na získané schopnosti. Najnovší a podrobný popis Termux:API možno nájsť na wiki projektu. Pokúsim sa vybrať to najvizuálnejšie a najzaujímavejšie, čo mi v budúcnosti umožní zdokonaliť sa v samostatnej práci.

Niekoľko príkladov Termux:API

  • stav-baterie termux
    Vráti stav batérie
    Termux krok za krokom (časť 2)
  • termux-jas
    Nastaví jas obrazovky od 0 do 255
    Termux krok za krokom (časť 2)
  • termux-toast
    Zobrazí dočasné kontextové upozornenie
    Termux krok za krokom (časť 2)
  • termux-pochodeň
    Obsahuje baterku
    Termux krok za krokom (časť 2)
  • termux-wifi-scaninfo
    Vráti informácie o poslednom skenovaní sietí Wi-Fi
    Termux krok za krokom (časť 2)

Je ľahké vidieť, že návratové hodnoty sú reťazce, slovníky, zoznamy slovníkov, v podstate dátové typy, s ktorými Python dobre funguje, takže ďalším krokom je nastavenie.

Krok 5

Nainštalujte Python a nano

Ak chcete nainštalovať Python, napíšte do terminálu:

updg
apt install python
apt install python2

Teraz máme nainštalovaný Python 2 a 3.

Pri práci na tomto článku som objavil ďalší textový editor, nano, ktorý sa mi páčil viac ako vim, poďme si ho nainštalovať:

apt install nano

Používa sa jednoduchšie ako vim a nano má užívateľsky prívetivejšie rozhranie. Na zariadení s Androidom je vim ešte pohodlnejší.

HelloWorld v Pythone v Termuxe

Celkovo sa to dalo zaobísť aj bez tohto bodu, ale nainštalovať Python do Termuxu a nenapísať HelloWorld je podľa mňa zlé správanie.

Mojím cieľom nie je nikoho učiť Python, takže tí, čo nevedia, si môžu kód jednoducho skopírovať (alebo sa začať učiť sami, literatúry je našťastie dosť) a tí, čo vedia, si môžu sami niečo vyrezať. A v tichosti vám tiež ukážem spôsob, ako zadávať text do terminálu bez editora.

cat >hello-world.py     
# Если не указывать источник (напоминаю cat 1.txt > 2.txt)
# то cat будет брать данные из стандартного потока ввода,
# проще говоря вводимое с клавиатуры.

str = ‘Hello, world!’ # присваиваем переменной str значение "Hello, world!"
print (str) # выводим на экран значение из переменной str

# Ctrl + D закончить ввод и записать файл (hello-world.py)

py hello-world.py # запускаем файл (py это alias от python)

Termux krok za krokom (časť 2)

Ak ste si počas procesu zadávania nevšimli chybu a už ste stlačili Enter, nebudete môcť prejsť na vyššie uvedený riadok; dokončite zadávanie stlačením Ctrl + D (môžete dokonca prerušiť Ctrl + Z) a opakujte všetko od začiatku. Keďže sme použili '>', súbor bude úplne prepísaný. Z tohto dôvodu neodporúčam používať túto metódu zadávania, pokiaľ si nie ste istí, že kód napíšete hneď 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 je voliteľná) obsahujúci sadu príkazov terminálu, z ktorých niektoré sme už študovali. Tu zoznam väčšiny príkazov, všetko by malo fungovať, ale uvedomte si, že toto je zoznam pre „dospelý“ Linux a nie pre Termux, ale len Skvelé veci na bash skriptoch.

Pomocou skriptov môžete automatizovať takmer všetky monotónne akcie. Napíšme jednoduchý bash skript, ktorý vypíše hodnotu z premennej, ktorú vytvoril, opäť použijem cat, môžete použiť bežný textový editor a tí, ktorí sa chcú najmä trénovať, môžu použiť echo.

cat >test.sh

export str="Привет, Хабр!"
# export создает переменную str
# и присваивает ей значение "Привет, Хабр!"
# Не ставьте пробелы до и после ‘=’

echo $str # Для обращения к переменным перед ними ставится ‘$’

# Ctrl + D

# ./test.sh для запуска скрипта, но если это сделать сейчас то будет ошибка
# для избавления от ошибки нужно сделать файл test.sh исполняемым

chmod +x test.sh
# chmod изменяет права доступа (+ добавить / - убрать)
# ‘+x’ означает что мы делаем файл исполняемым

./test.sh # Запускаем выполнение нашего скрипта

Termux krok za krokom (časť 2)

Bash skript s Termux: API

Napíšme niečo iné ako notoricky známe HelloWorlds, ale rovnako zbytočné. Náš skript bude:

  1. vykonať požiadavku API termux-battery-status
  2. prijaté údaje uložte do súboru test.txt
  3. zobrazenie údajov zo súboru na obrazovke
  4. spustite predtým napísaný program hello-world.py
  5. Údaje prijaté z programu zapíšte do súboru test.txt
  6. zobrazenie údajov zo súboru na obrazovke
  7. prenos údajov zo súboru do schránky
  8. zobraziť obsah schránky
  9. zobraziť kontextovú správu s údajmi zo schránky

Najprv si vytvorte priečinok pre prácu a skopírujte tam hello-world.py ako test.py, v tomto priečinku vytvorte súbory test.sh a test.txt:

mkdir bashscript

cat hello-world.py >> bashscript/test.py

cd bashscript/

touch test.sh test.txt # touch создает файлы

chmod +x test.sh

Teraz akýmkoľvek pohodlným spôsobom napíšte 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, keď sme v priečinku bashscript, píšeme ./test.sh V termináli na zariadení so systémom Android vidíme:

Termux krok za krokom (časť 2)

Napísali sme teda plánovaný bash scenár. Môžete to zriediť výstupom informácií o vykonaní každej akcie do konzoly (pomocou ozveny), nechám to na čitateľov.

Krok 7

Urobme niečo užitočné

Relatívne užitočné

Sformulujme si zadávacie podmienky
Po spustení by aplikácia mala umiestniť náhodný riadok zo súboru do schránky a upozorniť na to kontextovou správou.

Zoberme si bash skript ako základ a extrahujeme náhodný riadok zo súboru pomocou podprogramu Python. Urobme si plán pre scenár:

  1. Spustiť podprogram
  2. Preneste výsledok podprogramu do schránky
  3. Zobrazte kontextovú správu

Rozhodnime sa o názvoch adresárov a súborov aplikácie:

  • priečinok rndstr v domovskom adresári
    • source - súbor, z ktorého budeme brať riadky
    • rndstr.py - podprogram, ktorý vytlačí náhodný riadok zo zdrojového súboru do konzoly
    • rndstr.sh - súbor skriptu

Vytvoríme adresár aplikácie a presunieme sa do neho a vytvoríme tam súbory.

Prvé dva body plánu skriptu môžu byť spojené potrubím, výsledkom čoho je, že pomocou Termux: API dostaneme:

#!/bin/bash

python ~/rndstr/rndstr.py | termux-clipboard-set # 1 и 2 пункты плана работы

termux-toast "OK" # 3 пункт. Выводим всплывающее сообщение "ОК"

Do zdrojového súboru môžete vložiť ľubovoľný text logicky rozdelený do riadkov, rozhodol som sa vložiť aforizmy:

Výpis zdrojového súboru

Искренность не есть истина. Л. Лавель
Терпи и воздерживайся. Эпиктет
Благородно только то, что бескорыстно. Ж. Лабрюйер
Будь благоразумно отважным. Б. Грасиан
Доброта лучше красоты. Г. Гейне
Для великих дел необходимо неутомимое постоянство. Ф.Вольтер
Если ты хочешь, чтобы тебе всегда угождали, прислуживай себе сам. Б. Франклин
Чрезмерная скромность есть не что иное, как скрытая гордость. А. Шенье
Очень умным людям начинают не доверять, если видят их смущение. Ф. Ницше
Бедность указывает на отсутствие средств, а не на отсутствие благородства. Д. Боккаччо
Нужно остерегаться доведения скромности до степени унижения. А. Бакиханов
Кто отказывается от многого, может многое себе позволить. Ж. Шардон
Когда нам платят за благородный поступок, его у нас отнимают. Н. Шамфор
Не получить вовсе - не страшно, но лишиться полученного обидно. Клавдий Элиан
Легче переносить терпеливо то, что нам не дано исправить. Гораций
Устаешь ждать, но насколько хуже было бы, если бы ждать стало нечего. Б. Шоу
Все приходит вовремя, если люди умеют ждать. Ф. Рабле
Своим терпением мы можем достичь большего, чем силой. Э. Берк
Надо уметь переносить то, чего нельзя избежать. М. Монтень
Кто в деле смел, тот слов не устрашится. Софокл
Я не люблю сражаться, я люблю побеждать. Б. Шоу
Затравленный и прижатый к стене кот превращается в тигра. М. Сервантес
Достойный человек не идет по следам других людей. Конфуций
Великий ум проявит свою силу не только в умении мыслить, но и в умении жить. Р. Эмерсон
Слава - товар невыгодный. Стоит дорого, сохраняется плохо. О. Бальзак
Сдержанность и уместность в разговорах стоят больше красноречия. Ф. Бэкон
Кто молчать не умеет, тот и говорить, не способен. Сенека Младший
Хорошие манеры состоят из маленьких жертв. Ф. Честерфилд
Добрый человек не тот, кто умеет делать добро, а тот, кто не умеет делать зла. В. Ключевский
Не произносите бесповоротных суждений! Августин
Ничего слишком! Солон

Všetko, čo musíme urobiť, je vytvoriť podprogram, ktorý extrahuje náhodný reťazec zo zdrojového súboru.
Opíšme si algoritmus podprogramu:

  1. Otvorte zdrojový súbor
  2. Počítanie počtu riadkov v otvorenom súbore
  3. Zatvorte súbor (nemá zmysel ho nechať otvorený príliš dlho)
  4. Vygenerujte náhodné celé číslo v rámci počtu riadkov v zdrojovom súbore
  5. Otvorte zdrojový súbor
  6. Pod číslom vygenerovaného čísla zobrazíme riadok
  7. Zatvorenie súboru

Poďme implementovať algoritmus v Pythone (píšem v Pythone 3.7):

import random  #  импортируем для генерации случайных чисел
import os  #  для получения пути

path = os.path.abspath(__file__)  #  получаем прямой путь до файла rndstr.py
path = os.path.dirname(path)  #  преобразуем в путь до директории
path = path  + '/source'  #  преобразуем в путь до файла source

f = open(path)  #  открываем файл
i = 0  #  обнуляем счетчик
for str in f: i+=1  #  считаем строки файла
f.close  #  закрываем файл

j = int(round(i * random.random()))  #  генерируем целое случайное число от 0 до i

f = open(path)  #  открываем файл
i = 0  #  обнуляем счетчик
for str in f:  #  перебираем строки из файла
    if i == j:  #  если счетчик строк равен сгенерированному числу
        print (str, end='')  #  выводим строку без перехода на новую
        break  #  выходим из цикла
    i+=1  #  увеличиваем счетчик на 1
f.close  #  закрываем файл

Po vytvorení a zápise súborov musíte súboru udeliť práva na spustenie rndstr.sha vytvorte alias pre rýchle spustenie.

alias rnst="~/rndstr/rndstr.sh"

Teraz zadaním do terminálu rnst dostaneme na schránku náhodný aforizmus, ktorý sa dá použiť napríklad v korešpondencii.

Napísali sme teda aspoň niečo užitočné. Relatívne užitočné.

ps

V poslednom kroku som zámerne neposkytol snímky obrazovky a podrobne neanalyzoval niektoré akcie, popisoval som len obsah súborov, aby čitatelia mali možnosť pracovať samostatne.

Myslím, že stojí za to dokončiť tento „Termux krok za krokom“. Samozrejme, toto sú len úplne prvé kroky, ale teraz sa môžete posunúť vpred sami.

Pôvodne som plánoval v tejto sérii ukázať, ako používať nmap, sqlmap, ale aj bezo mňa je už veľa článkov na túto tému. Ak chcete, aby som pokračoval v sérii “Termux krok za krokom”, potom je tu prieskum nižšie a v komentároch môžete navrhnúť, o čom ešte písať.

Do prieskumu sa môžu zapojiť iba registrovaní užívatelia. Prihlásiť saProsím.

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

  • Да

  • Nie

Hlasovali 2 používatelia. Nezdržali sa hlasovania.

Zdroj: hab.com

Pridať komentár