Termux pas cu pas (Partea 2)

В ultima parte ne-am familiarizat cu comenzile de bază ale Termux, am configurat o conexiune SSH la un computer, am învățat cum să creăm alias-uri și am instalat mai multe utilitare utile. De data aceasta trebuie să facem un pas și mai departe, suntem alături de voi:

  • aflați despre Termux:API
  • instalați Python și nano și scrieți „Bună, lume!” în Python
  • aflați despre scripturile bash și scrieți un script folosind Termux:API
  • folosind un script bash, Termux:API și Python vom scrie un program simplu

Deoarece acum înțelegem ce fac comenzile de intrare, atunci de la pasul următor nu voi descrie fiecare acțiune atât de detaliat, dar acolo unde pot apărea dificultăți, voi explica cu siguranță.

Folosesc foarte mult aliasuri, așa că abrevierile folosite în această parte sunt afișate aici:

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

Planul este gata, poți începe! Și, desigur, nu uitați de „fila magică” (Vezi partea 1).

Pasul 4

Scufundare în Termux: API Rabbit Hole

API cât de mult a fuzionat în acest cuvânt pentru inima codificatorului

Dacă nu atingem subiectul Termux: API, atunci toți pașii noștri s-ar putea reduce la o simplă repovestire a unei broșuri precum „Linux for Dummies”, așa cum s-a menționat pe bună dreptate în comentariile de la prima parte.

Mai întâi, instalați Termux:API de pe Google Play Market (nu strica să reporniți Termux după aceea):

Termux pas cu pas (Partea 2)

În continuare, trebuie să instalăm pachetul API în consola Termux:

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

Pentru experimentare, folosesc Android 5.1.1, pentru proprietarii de Android 7 trebuie să „protejeze” Termux: API mergând la „Setări” > „Aplicații protejate”, în caz contrar, apelurile API precum termux-battery-status, va atârna. (Cm. wiki de proiect)

Acum merită să aruncăm o privire mai atentă asupra oportunităților dobândite. Cea mai recentă și mai detaliată descriere a Termux:API poate fi găsită la wiki de proiect. Voi încerca să aleg cel mai vizual și mai interesant, ceea ce îmi va permite să-mi umplu mâna pentru munca independentă în viitor.

Câteva exemple Termux:API

  • termux-starea-bateriei
    Returnează starea bateriei
    Termux pas cu pas (Partea 2)
  • termux-luminozitate
    Setează luminozitatea ecranului de la 0 la 255
    Termux pas cu pas (Partea 2)
  • termux-toast
    Afișează o notificare temporară de toast
    Termux pas cu pas (Partea 2)
  • termux-torță
    Include lanterna
    Termux pas cu pas (Partea 2)
  • termux-wifi-scaninfo
    Returnează informații despre ultima scanare a rețelelor Wi-Fi
    Termux pas cu pas (Partea 2)

Este ușor de observat că valorile returnate sunt șiruri de caractere, dicționare, liste de dicționare, în general, tipuri de date cu care Python funcționează excelent, așa că următorul pas este configurarea acestuia.

Pasul 5

Instalați Python și nano

Pentru a instala Python, scrieți în terminal:

updg
apt install python
apt install python2

Acum avem instalat 2 și 3 Python.

În timp ce lucram la articol, am descoperit un alt editor de text nano care mi-a plăcut mai mult decât vim, să-l instalăm:

apt install nano

Este mai ușor de utilizat decât vim, iar nano are o interfață mai ușor de utilizat. Pe un dispozitiv Android, vim este încă mai convenabil.

HelloWorld în Python la Termux

În general, a fost posibil să se facă fără acest element, dar a pune Python în Termux și a nu scrie HelloWorld, în opinia mea, este o manieră proastă.

Nu îmi propun să învăț pe nimeni Python, așa că cei care nu știu pot pur și simplu să copieze codul (sau să înceapă să învețe singuri, deoarece există destulă literatură), iar cei care știu pot face singuri ceva. Și voi arăta „sub pretext” o modalitate de a introduce text în terminal fără un editor.

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 pas cu pas (Partea 2)

Dacă nu ați observat o eroare în timpul procesului de introducere și ați apăsat deja Enter, atunci nu veți putea merge la linia de mai sus, pentru a face acest lucru, terminați introducerea apăsând Ctrl + D (în general puteți întrerupe Ctrl + Z) și repetați totul de la început. Deoarece am folosit „>”, atunci fișierul va fi complet suprascris. Din acest motiv, nu recomand să utilizați această metodă de introducere decât dacă sunteți sigur că veți scrie codul imediat, fără erori.

Pasul 6

Scripturi Bash

Scripturile Bash sunt o modalitate excelentă de a vă automatiza munca la terminal. Scriptul este un fișier cu extensia .sh (extensia este opțională) care conține un set de comenzi terminale, dintre care unele le-am studiat deja. Aici lista celor mai multe comenzi, totul ar trebui să funcționeze, dar rețineți că aceasta este o listă pentru Linux „adult”, nu Termux, ci doar material excelent despre scripturile bash.

Cu ajutorul scripturilor, puteți automatiza aproape toate acțiunile monotone. Să scriem cel mai simplu script bash care afișează valoarea din variabila pe care a creat-o, voi folosi cat din nou, poți folosi un editor de text normal, iar cei care vor mai ales să se antreneze pot folosi 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 pas cu pas (Partea 2)

Script Bash cu Termux:API

Să scriem ceva diferit de celebrele HelloWorlds, dar la fel de inutil. Scenariul nostru va fi:

  1. executați cererea API termux-battery-status
  2. salvați datele primite în fișierul test.txt
  3. tipăriți datele dintr-un fișier pe ecran
  4. executați programul hello-world.py scris anterior
  5. scrieți datele primite de la program în fișierul test.txt
  6. tipăriți datele dintr-un fișier pe ecran
  7. mutați datele din fișier în clipboard
  8. afișează conținutul clipboard-ului
  9. afișați un mesaj pop-up cu date din clipboard

Mai întâi, creați un folder pentru lucru și copiați hello-world.py acolo ca test.py, creați fișiere test.sh și test.txt în acest folder:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Acum, în orice mod convenabil, scrieți scriptul în fișierul 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

Acum, fiind în folderul bashscript, scriem ./test.sh observăm în terminalul de pe dispozitivul Android:

Termux pas cu pas (Partea 2)

Așa că am scris scriptul bash planificat. Îl puteți dilua cu ieșirea către consola de informații despre execuția fiecărei acțiuni (folosind echo), voi lăsa asta pentru cititori.

Pasul 7

Să facem ceva util

Relativ util

Să formulăm termenii de referință
După lansare, aplicația ar trebui să plaseze o linie aleatorie din fișier în clipboard și să notifice despre aceasta printr-un mesaj pop-up.

Vom lua ca bază un script bash, vom extrage o linie aleatorie dintr-un fișier folosind o subrutină Python. Să facem un plan de lucru pentru script:

  1. Rulați subrutina
  2. Transferați rezultatul subrutinei în clipboard
  3. Afișează mesajul pop-up

Să definim numele directorului și fișierelor aplicației:

  • folderul rndstr din directorul de acasă
    • sursă - fișierul din care vom lua linii
    • rndstr.py - o subrutină care afișează o linie aleatorie de la fișierul sursă la consolă
    • rndstr.sh - fișier script

Creați un director de aplicații și mutați-vă la el și creați fișiere acolo.

Primele două puncte ale planului de script pot fi combinate printr-o conductă, ca rezultat, folosind Termux: API obținem:

#!/bin/bash

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

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

În fișierul sursă, puteți pune orice text împărțit logic în rânduri, am decis să pun aforisme:

Lista fișierelor sursă

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

Trebuie doar să creăm o subrutină care extrage un șir aleator din fișierul sursă.
Să scriem algoritmul subrutinei:

  1. Fișier open source
  2. Numărarea numărului de linii dintr-un fișier deschis
  3. Închideți fișierul (nu există nimic care să-l țină deschis pentru timp suplimentar)
  4. Generăm un număr întreg aleatoriu în numărul de linii ale fișierului sursă
  5. Fișier open source
  6. Emitem o linie sub numărul numărului generat
  7. Închiderea dosarului

Implementăm algoritmul în Python (scriu sub 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  #  закрываем файл

După ce fișierele sunt create și scrise, trebuie să acordați permisiuni de execuție a fișierului rndstr.shși creați un alias pentru lansare rapidă.

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

Acum tastând în terminal rnst vom obține un aforism aleatoriu pe clipboard, care, de exemplu, poate fi folosit în corespondență.

Aici am scris măcar ceva util. Relativ util.

Ps

În ultimul pas, în mod intenționat, nu am oferit capturi de ecran și nu am analizat în detaliu unele dintre acțiuni, scriind doar conținutul fișierelor pentru ca cititorii să aibă posibilitatea de a lucra pe cont propriu.

Pe acest „Termux pas cu pas”, cred că merită terminat. Desigur, aceștia sunt doar primii pași, dar acum poți să mergi înainte singur.

Inițial, am plănuit să arăt în acest ciclu cum să folosesc nmap, sqlmap, dar fără mine există deja o mulțime de articole pe acest subiect. Dacă vrei să continui ciclul „Termux pas cu pas”, atunci există un sondaj mai jos și în comentarii poți sugera despre ce altceva să scriu.

Numai utilizatorii înregistrați pot participa la sondaj. Loghează-te, Vă rog.

Continuați „Termux pas cu pas”?

  • Da

  • Nu

Au votat 2 utilizatori. Nu există abțineri.

Sursa: www.habr.com

Adauga un comentariu