Termux krok za krokem (část 2)

В poslední část seznámili jsme se se základními příkazy Termuxu, nastavili SSH připojení k PC, naučili se vytvářet aliasy a nainstalovali několik užitečných utilit. Tentokrát musíme jít ještě dál, jsme s vámi:

  • další informace o Termux:API
  • nainstalujte Python a nano a napište "Ahoj, světe!" v Pythonu
  • dozvědět se o bash skriptech a napsat skript pomocí Termux:API
  • pomocí bash skriptu, Termux:API a Pythonu napíšeme jednoduchý program

Protože nyní rozumíme tomu, co vstupní příkazy dělají, pak od dalšího kroku nebudu každou akci popisovat tak podrobně, ale tam, kde mohou být potíže, určitě vysvětlím.

Často používám aliasy, takže zde jsou uvedeny zkratky použité v této části:

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

Plán je připraven, můžete začít! A samozřejmě nezapomeňte na „kouzelnou kartu“ (Viz část 1).

Krok 4

Potápění po Termuxu: Králičí díra API

API, kolik se sloučilo do tohoto slova pro srdce kodéra

Pokud se nedotkneme tématu Termux: API, pak by se všechny naše kroky mohly zredukovat na prosté převyprávění nějaké brožury typu "Linux pro blbce", jak bylo správně uvedeno v komentářích k prvnímu dílu.

Nejprve nainstalujte Termux:API z Google Play Market (neškodí poté restartovat Termux):

Termux krok za krokem (část 2)

Dále musíme nainstalovat balíček API do konzole Termux:

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

Pro experimentování používám Android 5.1.1, pro Android 7 majitelé potřebují „chránit“ Termux: API tím, že přejdou do „Nastavení“ > „Chráněné aplikace“, jinak volání API jako termux-battery-status, bude viset. (Cm. wiki projektu)

Nyní stojí za to se na získané příležitosti podívat blíže. Nejnovější a nejpodrobnější popis Termux:API naleznete na wiki projektu. Pokusím se vybrat to nejvizuálnější a nejzajímavější, což mi v budoucnu umožní naplnit ruku k samostatné tvorbě.

Některé příklady Termux:API

  • stav-baterie termux
    Vrací stav baterie
    Termux krok za krokem (část 2)
  • termux-jas
    Nastaví jas obrazovky od 0 do 255
    Termux krok za krokem (část 2)
  • termux-toast
    Zobrazuje dočasné upozornění na toast
    Termux krok za krokem (část 2)
  • termux-pochodeň
    Obsahuje baterku
    Termux krok za krokem (část 2)
  • termux-wifi-scaninfo
    Vrátí informace o posledním skenování sítí Wi-Fi
    Termux krok za krokem (část 2)

Je snadné vidět, že návratové hodnoty jsou řetězce, slovníky, seznamy slovníků, obecně datové typy, se kterými Python skvěle pracuje, takže dalším krokem je jeho nastavení.

Krok 5

Nainstalujte Python a nano

Chcete-li nainstalovat Python, napište do terminálu:

updg
apt install python
apt install python2

Nyní máme nainstalovaný 2 a 3 Python.

Při práci na článku jsem objevil další nano textový editor, který se mi líbil víc než vim, pojďme si ho nainstalovat:

apt install nano

Používá se snáze než vim a nano má uživatelsky přívětivější rozhraní. Na zařízení Android je vim stále pohodlnější.

HelloWorld v Pythonu na Termux

Celkově se bez této položky dalo obejít, ale umístit Python do Termuxu a nenapsat HelloWorld je podle mého názoru špatné chování.

Nemám za cíl nikoho učit Python, takže kdo neumí, může si kód jednoduše zkopírovat (nebo se začít učit sám, protože literatury je dost), a kdo umí, může si něco vyrobit sám. A ještě "pod rouškou" ​​ukážu způsob, jak zadávat text do terminálu bez editoru.

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 krokem (část 2)

Pokud jste si během zadávání nevšimli chyby a již jste stiskli Enter, nebudete moci přejít na řádek výše, ukončete zadávání stisknutím Ctrl + D (obecně můžete přerušit Ctrl + Z) a opakujte vše od začátku. Protože jsme použili '>', soubor bude zcela přepsán. Z tohoto důvodu nedoporučuji používat tuto metodu zadávání, pokud si nejste jisti, že kód napíšete 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 je volitelná) obsahující sadu terminálových příkazů, z nichž některé jsme již studovali. Tady seznam většiny příkazů, vše by mělo fungovat, ale všimněte si, že toto je seznam pro "dospělý" Linux, ne pro Termux, ale jen skvělý materiál o bash skriptech.

Pomocí skriptů můžete automatizovat téměř všechny monotónní akce. Napišme si nejjednodušší bash skript, který zobrazí hodnotu z proměnné, kterou vytvořil, znovu použiji cat, můžete použít běžný textový editor a kdo se chce především trénovat, může použít 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 krokem (část 2)

Bash skript s Termux:API

Pojďme napsat něco jiného než notoricky známé HelloWorlds, ale stejně zbytečné. Náš skript bude:

  1. spustit požadavek API termux-battery-status
  2. uložte přijatá data do souboru test.txt
  3. vytisknout data ze souboru na obrazovku
  4. spustit dříve napsaný program hello-world.py
  5. zapište data přijatá z programu do souboru test.txt
  6. vytisknout data ze souboru na obrazovku
  7. přesunout data ze souboru do schránky
  8. zobrazit obsah schránky
  9. zobrazit vyskakovací zprávu s daty ze schránky

Nejprve vytvořte složku pro práci a zkopírujte do ní hello-world.py jako test.py, v této složce vytvořte soubory 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

Nyní libovolným pohodlným způsobem zapište 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í, když jsme ve složce bashscript, píšeme ./test.sh v terminálu na zařízení Android pozorujeme:

Termux krok za krokem (část 2)

Takže jsme napsali plánovaný bash skript. Můžete to naředit výstupem do konzole informací o provedení každé akce (pomocí echa), to nechám na čtenářích.

Krok 7

Udělejme něco užitečného

Relativně užitečné

Pojďme formulovat zadání
Po spuštění by aplikace měla umístit náhodný řádek ze souboru do schránky a upozornit na to vyskakovací zprávou.

Jako základ si vezmeme bash skript, ze souboru vytáhneme náhodný řádek pomocí podprogramu Python. Udělejme pracovní plán skriptu:

  1. Spustit podprogram
  2. Přeneste výsledek podprogramu do schránky
  3. Zobrazit vyskakovací zprávu

Pojďme definovat názvy adresářů a souborů aplikace:

  • rndstr v domovském adresáři
    • source - soubor, ze kterého budeme brát řádky
    • rndstr.py - podprogram, který zobrazuje náhodný řádek ze zdrojového souboru do konzole
    • rndstr.sh - soubor skriptu

Vytvořte adresář aplikace, přesuňte se do něj a vytvořte v něm soubory.

První dva body plánu skriptu lze spojit potrubím, v důsledku čehož pomocí Termux: API získáme:

#!/bin/bash

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

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

Do zdrojového souboru můžete vložit libovolný text logicky rozdělený do řádků, rozhodl jsem se vložit aforismy:

Výpis zdrojového souboru

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

Potřebujeme pouze vytvořit podprogram, který extrahuje náhodný řetězec ze zdrojového souboru.
Pojďme napsat algoritmus podprogramu:

  1. Otevřete zdrojový soubor
  2. Počítání počtu řádků v otevřeném souboru
  3. Zavřete soubor (neexistuje nic, co by jej ponechalo otevřený na delší dobu)
  4. Vygenerujeme náhodné celé číslo v rámci počtu řádků zdrojového souboru
  5. Otevřete zdrojový soubor
  6. Vypíšeme řádek pod číslem vygenerovaného čísla
  7. Zavírání souboru

Algoritmus implementujeme v Pythonu (píšu v Pythonu 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 vytvoření a zapsání souborů musíte souboru udělit oprávnění ke spuštění rndstr.sha vytvořte alias pro rychlé spuštění.

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

Nyní pište do terminálu rnst dostaneme na schránku náhodný aforismus, který lze například použít v korespondenci.

Zde jsme napsali alespoň něco užitečného. Relativně užitečné.

Ps

V posledním kroku jsem záměrně neposkytl screenshoty a podrobně neanalyzoval některé akce, napsal pouze obsah souborů, aby čtenáři měli možnost pracovat sami.

Na tomto "Termuxu krok za krokem" si myslím, že stojí za to dokončit. Jsou to samozřejmě jen úplně první krůčky, ale nyní se můžete posunout kupředu sami.

Původně jsem měl v plánu v tomto cyklu ukázat, jak používat nmap, sqlmap, ale beze mě už je na toto téma spousta článků. Pokud chcete, abych pokračoval v cyklu „Termux krok za krokem“, pak je níže anketa a v komentářích můžete navrhnout, o čem ještě psát.

Průzkumu se mohou zúčastnit pouze registrovaní uživatelé. Přihlásit se, prosím.

Pokračovat "Termux krok za krokem"?

  • Ano

  • Ne

2 uživatelé hlasovali. Nikdo se nezdržel hlasování.

Zdroj: www.habr.com

Přidat komentář