В
- 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“ (
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):
Ď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.
Teraz je čas bližšie sa pozrieť na získané schopnosti. Najnovší a podrobný popis Termux:API možno nájsť na
Niekoľko príkladov Termux:API
- stav-baterie termux
Vráti stav batérie
- termux-jas
Nastaví jas obrazovky od 0 do 255
- termux-toast
Zobrazí dočasné kontextové upozornenie
- termux-pochodeň
Obsahuje baterku
- termux-wifi-scaninfo
Vráti informácie o poslednom skenovaní sietí Wi-Fi
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)
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
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 # Запускаем выполнение нашего скрипта
Bash skript s Termux: API
Napíšme niečo iné ako notoricky známe HelloWorlds, ale rovnako zbytočné. Náš skript bude:
- vykonať požiadavku API termux-battery-status
- prijaté údaje uložte do súboru test.txt
- zobrazenie údajov zo súboru na obrazovke
- spustite predtým napísaný program hello-world.py
- Údaje prijaté z programu zapíšte do súboru test.txt
- zobrazenie údajov zo súboru na obrazovke
- prenos údajov zo súboru do schránky
- zobraziť obsah schránky
- 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:
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:
- Spustiť podprogram
- Preneste výsledok podprogramu do schránky
- 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:
- Otvorte zdrojový súbor
- Počítanie počtu riadkov v otvorenom súbore
- Zatvorte súbor (nemá zmysel ho nechať otvorený príliš dlho)
- Vygenerujte náhodné celé číslo v rámci počtu riadkov v zdrojovom súbore
- Otvorte zdrojový súbor
- Pod číslom vygenerovaného čísla zobrazíme riadok
- 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.sh
a 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.
Pokračovať v „Termux krok za krokom“?
-
Да
-
Nie
Hlasovali 2 používatelia. Nezdržali sa hlasovania.
Zdroj: hab.com