Termux korak za korakom (2. del)

В zadnji del Seznanili smo se z osnovnimi ukazi Termuxa, vzpostavili SSH povezavo z osebnim računalnikom, se naučili ustvarjati vzdevke in namestili več uporabnih pripomočkov. Tokrat moramo še dlje, z vami smo:

  • spoznajte Termux:API
  • Namestimo Python in nano ter napišemo tudi »Hello, world!« v Pythonu
  • spoznajte skripte bash in napišite skript z uporabo Termux:API
  • Napišimo preprost program z uporabo skripta bash, Termux:API in Python

Ker zdaj razumemo, kaj počnejo vneseni ukazi, od naslednjega koraka ne bom opisal vsakega dejanja tako podrobno, ampak tam, kjer lahko pride do težav, bom zagotovo pojasnil.

Pogosto uporabljam vzdevke, zato so okrajšave, uporabljene v tem delu, prikazane tukaj:

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

Načrt je pripravljen, lahko začnemo! In seveda ne pozabite na "čarobni zavihek" (Glej 1. del).

Korak 4

Potapljanje po Termux:API Rabbit Hole

API, koliko se je v tej besedi združilo srce koderja

Če se ne dotaknemo teme Termux:API, bi lahko vse naše korake skrčili na preprosto pripovedovanje neke brošure, kot je "Linux za telebane", kot je bilo pravilno omenjeno v komentarjih k prvemu delu.

Najprej namestimo Termux:API iz Google Play Market (pozneje ne bo škodilo, če ponovno zaženemo Termux):

Termux korak za korakom (2. del)

Nato moramo namestiti paket API v konzolo Termux:

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

Za poskuse uporabljam Android 5.1.1, lastniki Androida 7 pa morate 'zaščititi' Termux:API tako, da odprete Nastavitve > Zaščitene aplikacije, sicer klici API-ja, kot termux-battery-status, bo zmrznil. (Cm. wiki projekta)

Zdaj je čas, da podrobneje pogledamo pridobljene zmogljivosti. Najnovejši in podroben opis Termux:API lahko najdete na wiki projekta. Poskušal bom izbrati čim bolj nazorno in zanimivo, kar mi bo omogočilo, da se bom v prihodnje še bolje izobraževal pri samostojnem delu.

Nekaj ​​primerov Termux:API

  • termux-stanje-baterije
    Vrne stanje baterije
    Termux korak za korakom (2. del)
  • termux-svetlost
    Nastavi svetlost zaslona od 0 do 255
    Termux korak za korakom (2. del)
  • termux-toast
    Prikaže začasno pojavno obvestilo
    Termux korak za korakom (2. del)
  • termux-gorilnik
    Vključuje svetilko
    Termux korak za korakom (2. del)
  • termux-wifi-scaninfo
    Vrne informacije o zadnjem pregledu omrežij Wi-Fi
    Termux korak za korakom (2. del)

Preprosto je videti, da so vrnjene vrednosti nizi, slovarji, seznami slovarjev, v bistvu tipi podatkov, s katerimi Python dobro deluje, zato je naslednji korak, da ga nastavite.

Korak 5

Namestite Python in nano

Če želite namestiti Python, vnesite v terminal:

updg
apt install python
apt install python2

Zdaj imamo nameščena Python 2 in 3.

Med delom na tem članku sem odkril še en urejevalnik besedil, nano, ki mi je bil bolj všeč kot vim, namestimo ga:

apt install nano

Lažji je za uporabo kot vim, nano pa ima uporabniku prijaznejši vmesnik. V napravi Android je vim še vedno bolj priročen.

HelloWorld v Pythonu v Termuxu

Na splošno je bilo mogoče brez te točke, vendar je namestitev Pythona v Termux in ne pisanje HelloWorld po mojem mnenju slaba manira.

Moj cilj ni, da bi koga naučil Pythona, zato lahko tisti, ki ne znajo kodo preprosto skopirajo (ali se začnejo učiti sami, k sreči je literature dovolj), tisti, ki znajo, pa lahko kaj izklešejo sami. Po tihem vam bom pokazal tudi način za vnos besedila v terminal brez urejevalnika.

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 korak za korakom (2. del)

Če med postopkom vnosa niste opazili napake in ste že pritisnili Enter, potem ne boste mogli iti v zgornjo vrstico; za to dokončajte vnos s pritiskom na Ctrl + D (lahko celo prekinete Ctrl + Z) in ponovi vse od začetka. Ker smo uporabili '>', bo datoteka popolnoma prepisana. Zaradi tega ne priporočam uporabe tega načina vnosa, razen če ste prepričani, da boste kodo napisali takoj brez napak.

Korak 6

Bash skripte

Bash skripti so odličen način za avtomatizacijo vašega terminalskega dela. Skript je datoteka s končnico .sh (končnica ni obvezna), ki vsebuje nabor terminalskih ukazov, od katerih smo nekatere že preučili. Tukaj seznam večine ukazov, vse bi moralo delovati, vendar upoštevajte, da je to seznam za »odrasle« Linux in ne za Termux, ampak samo Odlične stvari o bash skriptih.

S skripti lahko avtomatizirate skoraj vsa monotona dejanja. Napišimo preprost bash skript, ki izpiše vrednost iz spremenljivke, ki jo je ustvaril, jaz bom spet uporabil cat, ti lahko uporabiš običajni urejevalnik besedil, tisti, ki se še posebej želijo uriti, pa lahko uporabijo 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 korak za korakom (2. del)

Bash skript s Termux:API

Napišimo nekaj drugačnega od razvpitega HelloWorlds, a prav tako neuporabnega. Naš scenarij bo:

  1. izvedite zahtevo API termux-battery-status
  2. prejete podatke shranite v datoteko test.txt
  3. prikaz podatkov iz datoteke na zaslonu
  4. izvedite predhodno napisani program hello-world.py
  5. Prejete podatke iz programa zapišite v datoteko test.txt
  6. prikaz podatkov iz datoteke na zaslonu
  7. prenos podatkov iz datoteke v odložišče
  8. prikaže vsebino odložišča
  9. prikaže pojavno sporočilo s podatki iz odložišča

Najprej ustvarimo mapo za delo in tja kopirajmo hello-world.py kot test.py, v tej mapi ustvarimo datoteki test.sh in test.txt:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Zdaj na poljuben primeren način napišite skript v datoteko 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

Zdaj pišemo v mapi bashscript ./test.sh V terminalu v napravi Android vidimo:

Termux korak za korakom (2. del)

Tako smo napisali načrtovan bash skript. Lahko ga razredčite tako, da podate informacije o izvedbi vsakega dejanja na konzolo (z uporabo odmeva), to bom pustil bralcem.

Korak 7

Naredimo nekaj koristnega

Relativno uporaben

Oblikujmo nalogo
Po zagonu mora aplikacija postaviti naključno vrstico iz datoteke v odložišče in o tem obvestiti s pojavnim sporočilom.

Vzemimo za osnovo skript bash in ekstrahirajmo naključno vrstico iz datoteke s podprogramom Python. Naredimo načrt za scenarij:

  1. Zaženi podprogram
  2. Prenesite rezultat podprograma v odložišče
  3. Prikažite pojavno sporočilo

Odločimo se za imena imenika in aplikacijskih datotek:

  • mapo rndstr v domačem imeniku
    • izvor - datoteka, iz katere bomo jemali vrstice
    • rndstr.py - podprogram, ki natisne naključno vrstico iz izvorne datoteke na konzolo
    • rndstr.sh - skriptna datoteka

Ustvarimo imenik aplikacij in se premaknemo vanj ter tam ustvarimo datoteke.

Prvi dve točki načrta skripta je mogoče združiti s cevovodom, posledično z uporabo Termux:API dobimo:

#!/bin/bash

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

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

V izvorno datoteko lahko postavite poljubno besedilo, logično razdeljeno na vrstice, odločil sem se, da dam aforizme:

Seznam izvorne datoteke

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

Vse kar moramo storiti je, da ustvarimo podprogram, ki ekstrahira naključni niz iz izvorne datoteke.
Opišimo algoritem podprograma:

  1. Odprite izvorno datoteko
  2. Štetje števila vrstic v odprti datoteki
  3. Zaprite datoteko (nima smisla, da jo imate odprto predolgo)
  4. Ustvarite naključno celo število znotraj števila vrstic v izvorni datoteki
  5. Odprite izvorno datoteko
  6. Pod številko generirane številke prikažemo vrstico
  7. Zapiranje datoteke

Implementirajmo algoritem v Python (pišem pod Python 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  #  закрываем файл

Ko so datoteke ustvarjene in zapisane, morate datoteki podeliti izvršilne pravice rndstr.shin ustvarite vzdevek za hiter zagon.

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

Zdaj z vnosom v terminal rnst na odložišče bomo prejeli naključni aforizem, ki ga lahko na primer uporabimo v korespondenci.

Tako smo napisali vsaj nekaj koristnega. Relativno uporaben.

Ps

V zadnjem koraku namenoma nisem zagotovil posnetkov zaslona in nisem podrobno analiziral nekaterih dejanj, opisal sem le vsebino datotek, tako da so bralci imeli možnost delati sami.

Mislim, da je vredno dokončati ta "Termux korak za korakom". Seveda so to le prvi koraki, zdaj pa lahko napredujete sami.

Sprva sem nameraval v tej seriji pokazati, kako uporabljati nmap, sqlmap, vendar je tudi brez mene že veliko člankov na to temo. Če želite, da nadaljujem cikel “Termux korak za korakom”, potem je spodaj anketa in v komentarjih lahko predlagate, o čem še pisati.

V anketi lahko sodelujejo samo registrirani uporabniki. Prijaviti se, prosim.

Nadaljevati »Termux korak za korakom«?

  • Da

  • Št

Glasovala sta 2 uporabnika. Vzdržanih ni.

Vir: www.habr.com

Dodaj komentar