Termux korak po korak (2. dio)

В posljednji dio upoznali smo se s osnovnim naredbama Termuxa, postavili SSH vezu s računalom, naučili kreirati aliase i instalirali nekoliko korisnih alata. Ovaj put moramo ići još dalje, uz vas smo:

  • naučite 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 napisat ćemo jednostavan program

Budući da sada razumijemo što rade naredbe za unos, od sljedećeg koraka neću opisati svaku radnju tako detaljno, ali tamo gdje može biti poteškoća, svakako ću objasniti.

Često koristim pseudonime, pa su kratice korištene 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" (Pogledajte 1. dio).

Korak 4

Ronjenje niz Termux:API Rabbit Hole

API koliko se toga spojilo u ovoj riječi 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 "Linux for Dummies", kako je ispravno navedeno u komentarima na prvi dio.

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

Termux korak po korak (2. dio)

Zatim moramo instalirati API paket u Termux konzolu:

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

Za eksperimentiranje koristim Android 5.1.1, za Android 7 vlasnici moraju "zaštititi" Termux: API odlaskom na 'Postavke' > 'Zaštićene aplikacije', inače API poziva kao termux-battery-status, objesit će se. (Cm. wiki projekta)

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

Neki Termux:API primjeri

  • termux-status-baterije
    Vraća stanje baterije
    Termux korak po korak (2. dio)
  • termux-svjetlina
    Postavlja svjetlinu zaslona od 0 do 255
    Termux korak po korak (2. dio)
  • termux-prepečenica
    Prikazuje privremenu obavijest o tostu
    Termux korak po korak (2. dio)
  • termux-baklja
    Uključuje svjetiljku
    Termux korak po korak (2. dio)
  • termux-wifi-scaninfo
    Vraća informacije o zadnjem skeniranju Wi-Fi mreža
    Termux korak po korak (2. dio)

Lako je vidjeti da su povratne vrijednosti nizovi, rječnici, popisi rječnika, općenito tipovi podataka s kojima Python odlično radi, pa je sljedeći korak njegovo postavljanje.

Korak 5

Instalirajte Python i nano

Da biste instalirali Python, upišite u terminal:

updg
apt install python
apt install python2

Sada imamo instalirana 2 i 3 Pythona.

Dok sam radio na članku, otkrio sam još jedan nano uređivač teksta koji mi se svidio više od vima, instalirajmo ga:

apt install nano

Lakši je za korištenje od vima, a nano ima sučelje koje je jednostavnije za korištenje. Na Android uređaju, vim je još praktičniji.

HelloWorld u Pythonu u Termuxu

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

Ne postavljam si cilj nikoga podučavati Pythonu, tako da oni koji ne znaju mogu jednostavno kopirati kod (ili sami krenuti učiti jer ima dovoljno literature), a oni koji znaju mogu nešto sami napraviti. I još ću "pod krinkom" 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 pogrešku tijekom procesa unosa i već ste pritisnuli Enter, tada nećete moći prijeći na gornji red, da biste to učinili, završite unos pritiskom na Ctrl + D (općenito možete prekinuti Ctrl + Z) i ponoviti sve ispočetka. Budući da smo koristili '>', datoteka će biti potpuno prebrisana. Iz tog razloga ne preporučam korištenje ove metode unosa osim ako niste sigurni da ćete odmah napisati kod bez pogrešaka.

Korak 6

Bash skripte

Bash skripte izvrstan su način za automatizaciju rada terminala. Skripta je datoteka s ekstenzijom .sh (ekstenzija nije obavezna) koja sadrži skup naredbi terminala, od kojih smo neke već proučavali. Ovdje popis većine naredbi, sve bi trebalo raditi, ali imajte na umu da je ovo popis za "odrasle" Linux, ne Termux, ali samo odličan materijal o bash skriptama.

Uz pomoć skripti možete automatizirati gotovo sve monotone radnje. Napišimo najjednostavniju bash skriptu koja prikazuje vrijednost iz varijable koju je on napravio, ja ću opet koristiti cat, možete koristiti normalni uređivač teksta, a oni koji se posebno žele vježbati 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 s Termux:API

Napišimo nešto drugačije od ozloglašenog HelloWorldsa, ali jednako beskorisno. Naša skripta će biti:

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

Prvo stvorite mapu za rad i tamo kopirajte hello-world.py kao test.py, stvorite datoteke test.sh i test.txt u ovoj mapi:

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 prikladan 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, budući da smo u bashscript mapi, pišemo ./test.sh promatramo u terminalu na Android uređaju:

Termux korak po korak (2. dio)

Tako smo napisali planiranu bash skriptu. Možete ga razrijediti izlazom na konzolu informacija o izvršenju svake radnje (pomoću echo-a), ovo ću ostaviti čitateljima.

Korak 7

Učinimo nešto korisno

Relativno korisno

Formulirajmo projektni zadatak
Nakon pokretanja, aplikacija bi trebala staviti slučajni redak iz datoteke u međuspremnik i obavijestiti o tome skočnom porukom.

Uzet ćemo bash skriptu kao osnovu, izdvojit ćemo nasumični redak iz datoteke pomoću Python potprograma. Napravimo plan rada skripte:

  1. Pokreni potprogram
  2. Prenesite rezultat potprograma u međuspremnik
  3. Prikaz skočne poruke

Definirajmo nazive direktorija i aplikacijskih datoteka:

  • mapa rndstr u početnom direktoriju
    • izvor - datoteka iz koje ćemo preuzimati retke
    • rndstr.py - potprogram koji prikazuje nasumični redak iz izvorne datoteke na konzolu
    • rndstr.sh - datoteka skripte

Napravite direktorij aplikacije i premjestite se na njega te tamo stvorite datoteke.

Prve dvije točke plana skripte mogu se kombinirati cjevovodom, kao rezultat, koristeći Termux: API dobivamo:

#!/bin/bash

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

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

U izvornoj datoteci možete staviti bilo koji tekst logički podijeljen u retke, odlučio sam staviti aforizme:

Popis izvorne datoteke

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

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

  1. Datoteka otvorenog koda
  2. Brojanje redaka u otvorenoj datoteci
  3. Zatvorite datoteku (ne postoji ništa što bi je držalo otvorenom dodatno vrijeme)
  4. Generiramo slučajni cijeli broj unutar broja redaka izvorne datoteke
  5. Datoteka otvorenog koda
  6. Ispisujemo liniju ispod broja generiranog broja
  7. Zatvaranje datoteke

Algoritam implementiramo u 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  #  закрываем файл

Nakon što su datoteke stvorene i zapisane, morate dati dopuštenje za izvođenje datoteke rndstr.shi stvorite alias za brzo pokretanje.

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

Sada upisujete u terminal rnst dobit ćemo slučajni aforizam na međuspremniku, koji se, na primjer, može koristiti u dopisivanju.

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

P.s

U posljednjem koraku namjerno nisam dao snimke zaslona i nisam detaljno analizirao neke radnje, već sam napisao samo sadržaj datoteka kako bi čitatelji imali priliku raditi sami.

Na ovom "Termuxu 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 u ovom ciklusu pokazati kako koristiti nmap, sqlmap, ali bez mene već postoji puno članaka na tu temu. Ako želite da nastavim ciklus “Termux korak po korak”, onda je ispod anketa i u komentarima možete predložiti o čemu još pisati.

U anketi mogu sudjelovati samo registrirani korisnici. Prijaviti se, molim.

Nastaviti "Termux korak po korak"?

  • Da

  • Ne

2 korisnika je glasalo. Suzdržanih nema.

Izvor: www.habr.com

Dodajte komentar