Termux korak po korak (2. dio)

В zadnji dio upoznali smo se sa osnovnim komandama Termuxa, postavili SSH konekciju sa računarom, naučili kako da kreiramo alias-ove i instalirali nekoliko korisnih uslužnih programa. Ovaj put moramo ići još dalje, uz vas smo:

  • saznajte više o Termux:API
  • instalirajte Python i nano i napišite "Hello, world!" u Pythonu
  • naučite o bash skriptama i napišite skriptu koristeći Termux:API
  • koristeći bash skriptu, Termux:API i Python napisaćemo jednostavan program

Pošto sada razumijemo šta rade naredbe za unos, onda od sljedećeg koraka neću tako detaljno opisivati ​​svaku radnju, ali gdje može doći do poteškoća, svakako ću objasniti.

Često koristim pseudonime, tako da su skraćenice koje se koriste u ovom dijelu prikazane ovdje:

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

Plan je spreman, možete početi! I naravno, ne zaboravite na "magic Tab" (Vidi dio 1).

korak 4

Ronjenje niz Termux:API Rabbit Hole

API koliko se stopilo u ovu riječ za srce kodera

Ako se ne dotičemo teme Termux: API, onda bi se svi naši koraci mogli svesti na jednostavno prepričavanje neke brošure poput "Linuxa za lutke", kako je s pravom navedeno u komentarima na prvi dio.

Prvo instalirajte Termux:API sa Google Play Marketa (ne škodi nakon toga ponovo pokrenuti Termux):

Termux korak po korak (2. dio)

Zatim moramo instalirati API paket u Termux konzolu:

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

Za eksperimentisanje koristim Android 5.1.1, za Android 7 vlasnici trebaju "zaštititi" Termux: API tako što će otići na 'Postavke' > 'Zaštićene aplikacije', inače API poziva poput termux-battery-status, objesit će se. (Cm. project wiki)

Sada vrijedi pobliže pogledati stečene mogućnosti. Najnoviji i najdetaljniji opis Termux:API-ja možete pronaći na project wiki. Pokušat ću odabrati najvizuelnije i najzanimljivije, što će mi omogućiti da napunim ruku za samostalan rad u budućnosti.

Neki Termux:API primjeri

  • termux-battery-status
    Vraća stanje baterije
    Termux korak po korak (2. dio)
  • termux-svjetlina
    Postavlja svjetlinu ekrana od 0 do 255
    Termux korak po korak (2. dio)
  • termux-tost
    Prikazuje privremenu obavijest o zdravlju
    Termux korak po korak (2. dio)
  • termux-torch
    Uključuje baterijsku lampu
    Termux korak po korak (2. dio)
  • termux-wifi-scaninfo
    Vraća informacije o posljednjem skeniranju Wi-Fi mreža
    Termux korak po korak (2. dio)

Lako je vidjeti da su povratne vrijednosti nizovi, rječnici, liste rječnika, općenito, tipovi podataka s kojima Python odlično radi, tako da je sljedeći korak da ga postavite.

korak 5

Instalirajte Python i nano

Da biste instalirali Python, napišite u terminalu:

updg
apt install python
apt install python2

Sada imamo instaliran 2 i 3 Python.

Radeći na članku, otkrio sam još jedan uređivač nano teksta koji mi se više dopao od vim-a, hajde da ga instaliramo:

apt install nano

Lakši je za korištenje od vim-a, a nano ima korisnički prilagođeniji interfejs. Na Android uređaju, vim je i dalje praktičniji.

HelloWorld u Pythonu u Termuxu

Uglavnom, bilo je moguće bez ove stavke, ali staviti Python u Termux i ne pisati HelloWorld, po mom mišljenju, loše je ponašanje.

Ne postavljam sebi cilj da bilo koga podučavam Python-u, tako da oni koji ne znaju mogu jednostavno da kopiraju kod (ili da počnu sami da uče, pošto literature ima dovoljno), a oni koji znaju mogu sami napraviti nešto. I ja ću "pod maskom" ipak pokazati način unosa teksta u terminal 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 korak po korak (2. dio)

Ako niste primijetili grešku tokom procesa unosa i već ste pritisnuli Enter, tada nećete moći ići na red iznad, da biste to učinili, završite unos pritiskom na Ctrl + D (općenito možete prekinuti Ctrl + Z) i ponovite sve od početka. Pošto smo koristili '>' onda će datoteka biti potpuno prepisana. Iz tog razloga, ne preporučujem korištenje ove metode unosa osim ako niste sigurni da ćete odmah napisati kod bez grešaka.

korak 6

Bash skripte

Bash skripte su odličan način za automatizaciju rada na terminalu. Skripta je datoteka sa ekstenzijom .sh (ekstenzija je opciona) koja sadrži skup terminalskih naredbi, od kojih smo neke već proučili. Evo lista većine komandi, sve bi trebalo da radi, ali imajte na umu da je ovo lista za "odrasli" Linux, ne Termux, već samo odličan materijal o bash skriptama.

Uz pomoć skripti možete automatizirati gotovo sve monotone radnje. Hajde da napišemo najjednostavniju bash skriptu koja prikazuje vrijednost iz varijable koju je kreirao, ja ću opet koristiti cat, možete koristiti normalni uređivač teksta, a oni koji se posebno žele istrenirati mogu koristiti 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 po korak (2. dio)

Bash skripta sa Termux:API

Hajde da napišemo nešto drugačije od ozloglašenog HelloWorldsa, ali isto tako beskorisno. Naš scenario će biti:

  1. izvršiti API zahtjev termux-battery-status
  2. sačuvajte primljene podatke u datoteku test.txt
  3. štampanje podataka iz datoteke na ekran
  4. izvršite prethodno napisani program hello-world.py
  5. upišite podatke primljene iz programa u datoteku test.txt
  6. štampanje podataka iz datoteke na ekran
  7. premjestiti podatke iz datoteke u međuspremnik
  8. prikazati sadržaj međuspremnika
  9. prikazati popup poruku sa podacima iz međuspremnika

Prvo, kreirajte folder za posao i kopirajte hello-world.py tamo kao test.py, kreirajte test.sh i test.txt fajlove u ovoj fascikli:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Sada, na bilo koji pogodan način, napišite skriptu u datoteku 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

Sada, dok smo u fascikli bashscript, pišemo ./test.sh vidimo u terminalu na Android uređaju:

Termux korak po korak (2. dio)

Tako smo napisali planirani bash skript. Možete ga razrijediti sa izlazom na konzolu informacija o izvršenju svake akcije (pomoću eha), ovo ću ostaviti za čitaoce.

korak 7

Hajde da uradimo nešto korisno

Relativno korisno

Hajde da formulišemo zadatak
Nakon pokretanja, aplikacija bi trebala postaviti nasumični red iz datoteke u međuspremnik i obavijestiti o tome iskačućom porukom.

Uzet ćemo bash skriptu kao osnovu, izvući ćemo nasumični red iz datoteke koristeći Python potprogram. Napravimo plan rada skripte:

  1. Pokreni podprogram
  2. Prenesite rezultat potprograma u međuspremnik
  3. Prikaži popup poruku

Definirajmo nazive direktorija i aplikacijskih datoteka:

  • rndstr folder u početnom direktoriju
    • izvor - datoteka iz koje ćemo uzimati redove
    • rndstr.py - potprogram koji prikazuje nasumični red od izvorne datoteke do konzole
    • rndstr.sh - datoteka skripte

Kreirajte direktorij aplikacije i idite na njega i tamo kreirajte datoteke.

Prve dvije točke plana skripte mogu se kombinirati kroz cjevovod, kao rezultat, koristeći Termux: API dobijamo:

#!/bin/bash

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

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

U izvorni fajl možete staviti bilo koji tekst logično podijeljen u redove, odlučio sam staviti aforizme:

Popis izvornih fajlova

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

Samo trebamo kreirati potprogram koji izdvaja nasumični niz iz izvorne datoteke.
Napišimo algoritam potprograma:

  1. Otvorite izvorni fajl
  2. Brojanje reda u otvorenoj datoteci
  3. Zatvorite datoteku (nema ništa što bi je ostavilo otvoreno za dodatno vrijeme)
  4. Generišemo nasumični cijeli broj unutar broja redova izvorne datoteke
  5. Otvorite izvorni fajl
  6. Iznosimo red ispod broja generiranog broja
  7. Zatvaranje fajla

Algoritam implementiramo u Python-u (pišem pod Python-om 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  #  закрываем файл

Nakon što su datoteke kreirane i napisane, morate dati dozvole za izvršavanje datoteke rndstr.sh, i kreirajte pseudonim za brzo pokretanje.

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

Sada kucate u terminalu rnst dobićemo nasumični aforizam u međuspremniku, koji se, na primjer, može koristiti u korespondenciji.

Ovdje smo napisali barem nešto korisno. Relativno korisno.

Ps

U posljednjem koraku namjerno nisam dao snimke ekrana i nisam detaljno analizirao neke od radnji, pišući samo sadržaj fajlova kako bi čitaoci imali priliku da rade sami.

Na ovom "Termux-u korak po korak", mislim da vrijedi završiti. Naravno, ovo su samo prvi koraci, ali sada možete i sami krenuti naprijed.

U početku sam planirao da u ovom ciklusu pokažem kako se koristi nmap, sqlmap, ali bez mene već postoji mnogo članaka na ovu temu. Ako želite da nastavim ciklus “Termux korak po korak”, onda postoji anketa ispod i u komentarima možete predložiti o čemu još pisati.

Samo registrovani korisnici mogu učestvovati u anketi. Prijavite semolim.

Nastaviti "Termux korak po korak"?

  • Da

  • Nijedan

2 korisnika je glasalo. Nema uzdržanih.

izvor: www.habr.com

Dodajte komentar