Termux hap pas hapi (Pjesa 2)

В pjesa e fundit Ne u njohëm me komandat themelore të Termux, vendosëm një lidhje SSH me një PC, mësuam se si të krijonim pseudonime dhe instaluam disa shërbime të dobishme. Këtë herë duhet të shkojmë edhe më tej, jemi me ju:

  • mësoni rreth Termux:API
  • Le të instalojmë Python dhe nano, dhe gjithashtu të shkruajmë "Përshëndetje, botë!" në Python
  • mësoni rreth skripteve bash dhe shkruani një skript duke përdorur Termux:API
  • Le të shkruajmë një program të thjeshtë duke përdorur një skript bash, Termux:API dhe Python

Meqenëse tani e kuptojmë se çfarë bëjnë komandat e futura, nga hapi tjetër nuk do ta përshkruaj çdo veprim me kaq hollësi, por aty ku mund të ketë vështirësi, do ta shpjegoj patjetër.

Unë shpesh përdor pseudonime, kështu që shkurtesat e përdorura në këtë pjesë janë paraqitur këtu:

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

Plani është gati, ne mund të fillojmë! Dhe sigurisht, mos harroni për "Sketën magjike" (Shihni pjesën 1).

Hapi 4

Zhytja poshtë Termux:API Rabbit Hole

API, sa është shkrirë në këtë fjalë për zemrën e koduesit

Nëse nuk prekim temën e Termux:API, atëherë të gjithë hapat tanë mund të reduktohen në një ritregim të thjeshtë të disa broshurave si "Linux for Dummies", siç u vu re me të drejtë në komentet e pjesës së parë.

Së pari, le të instalojmë Termux:API nga Google Play Market (më pas nuk do të jetë e dëmshme të rinisni Termux):

Termux hap pas hapi (Pjesa 2)

Më pas duhet të instalojmë paketën API në konsolën Termux:

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

Për eksperimente unë jam duke përdorur Android 5.1.1, për pronarët e Android 7 ju duhet të "mbroni" Termux:API duke shkuar te Settings > Protected Apps, përndryshe API thërret si termux-battery-status, do të ngrijë. (Cm. projekt wiki)

Tani është koha për të parë më nga afër aftësitë e fituara. Përshkrimi më i fundit dhe i detajuar i Termux:API mund të gjendet në projekt wiki. Do të përpiqem të zgjedh më vizuale dhe interesante, gjë që do të më lejojë të përmirësohem në punën e pavarur në të ardhmen.

Disa shembuj të Termux:API

  • termux-bateri-status
    Rikthen statusin e baterisë
    Termux hap pas hapi (Pjesa 2)
  • termux-shkëlqim
    Vendos ndriçimin e ekranit nga 0 në 255
    Termux hap pas hapi (Pjesa 2)
  • termux-tost
    Shfaq një njoftim të përkohshëm pop-up
    Termux hap pas hapi (Pjesa 2)
  • termux-pishtar
    Përfshin elektrik dore
    Termux hap pas hapi (Pjesa 2)
  • termux-wifi-scaninfo
    Kthen informacione për skanimin e fundit të rrjeteve Wi-Fi
    Termux hap pas hapi (Pjesa 2)

Është e lehtë të shihet se vlerat e kthyera janë vargje, fjalorë, lista fjalorësh, në thelb lloje të të dhënave me të cilat Python funksionon mirë, kështu që hapi tjetër është konfigurimi i tij.

Hapi 5

Instaloni Python dhe nano

Për të instaluar Python, shkruani në terminal:

updg
apt install python
apt install python2

Tani kemi të instaluar Python 2 dhe 3.

Gjatë punës për këtë artikull, zbulova një redaktues tjetër teksti, nano, i cili më pëlqeu më shumë se vim, le ta instalojmë:

apt install nano

Është më e lehtë për t'u përdorur sesa vim, dhe nano ka një ndërfaqe më miqësore për përdoruesit. Në një pajisje Android, vim është akoma më i përshtatshëm.

HelloWorld në Python në Termux

Në përgjithësi, ishte e mundur të bëhej pa këtë pikë, por instalimi i Python në Termux dhe mosshkrimi i HelloWorld, për mendimin tim, është sjellje e keqe.

Qëllimi im nuk është t'i mësoj askujt Python, kështu që ata që nuk e dinë thjesht mund të kopjojnë kodin (ose të fillojnë të mësojnë vetë, për fat të mirë ka mjaft literaturë), dhe ata që dinë mund të skalitin diçka vetë. Dhe në heshtje, do t'ju tregoj gjithashtu një mënyrë për të futur tekst në terminal pa një redaktues.

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 hap pas hapi (Pjesa 2)

Nëse gjatë procesit të hyrjes nuk keni vërejtur një gabim dhe tashmë keni shtypur Enter, atëherë nuk do të mund të shkoni në rreshtin e mësipërm; për ta bërë këtë, përfundoni hyrjen duke shtypur Ctrl + D (madje mund të ndërpritni Ctrl + Z) dhe përsëris gjithçka nga fillimi. Meqenëse kemi përdorur '>', skedari do të rishkruhet plotësisht. Për këtë arsye, unë nuk rekomandoj përdorimin e kësaj metode të hyrjes nëse nuk jeni të sigurt se do ta shkruani kodin menjëherë pa gabime.

Hapi 6

Skriptet Bash

Skriptet Bash janë një mënyrë e shkëlqyer për të automatizuar punën tuaj në terminal. Skripti është një skedar me shtesën .sh (shtesa është opsionale) që përmban një grup komandash terminali, disa prej të cilave i kemi studiuar tashmë. Këtu lista e shumicës së komandave, gjithçka duhet të funksionojë, por ju lutemi vini re se kjo është një listë për Linux "të rritur", dhe jo për Termux, por thjesht Gjëra të shkëlqyera në skriptet bash.

Duke përdorur skriptet, mund të automatizoni pothuajse të gjitha veprimet monotone. Le të shkruajmë një skript të thjeshtë bash që nxjerr vlerën nga ndryshorja që krijoi, unë përsëri do të përdor cat, ju mund të përdorni një redaktues teksti normal dhe ata që duan veçanërisht të trajnojnë veten mund të përdorin 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 hap pas hapi (Pjesa 2)

Skripti Bash me Termux:API

Le të shkruajmë diçka ndryshe nga HelloWorlds famëkeqe, por po aq të padobishme. Skenari ynë do të jetë:

  1. kryeni kërkesën e termux-battery-status API
  2. ruajini të dhënat e marra në skedarin test.txt
  3. shfaqni të dhënat nga një skedar në ekran
  4. ekzekutoni programin e shkruar më parë hello-world.py
  5. Shkruani të dhënat e marra nga programi në skedarin test.txt
  6. shfaqni të dhënat nga një skedar në ekran
  7. transferimi i të dhënave nga një skedar në kujtesën e fragmenteve
  8. shfaqni përmbajtjen e kujtesës
  9. shfaqni një mesazh pop-up me të dhëna nga clipboard

Së pari, le të krijojmë një dosje për punë dhe të kopjojmë hello-world.py atje si test.py, të krijojmë skedarët test.sh dhe test.txt në këtë dosje:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Tani, në çdo mënyrë të përshtatshme, shkruani skriptin në skedarin 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

Tani duke qenë në dosjen bashscript ne shkruajmë ./test.sh Ne shohim në terminal në një pajisje Android:

Termux hap pas hapi (Pjesa 2)

Kështu që ne shkruam skenarin e planifikuar bash. Ju mund ta holloni atë duke nxjerrë informacion mbi ekzekutimin e çdo veprimi në tastierë (duke përdorur echo), unë do ta lë këtë për lexuesit.

Hapi 7

Le të bëjmë diçka të dobishme

Relativisht e dobishme

Le të formulojmë termat e referencës
Pas nisjes, aplikacioni duhet të vendosë një rresht të rastësishëm nga një skedar në kujtesën e fragmenteve dhe të njoftojë për këtë me një mesazh pop-up.

Le të marrim një skript bash si bazë dhe të nxjerrim një rresht të rastësishëm nga një skedar duke përdorur një nënprogram Python. Le të bëjmë një plan për skenarin:

  1. Ekzekuto nënprogramin
  2. Transferoni rezultatin e nënprogramit në kujtesën e fragmenteve
  3. Shfaq një mesazh pop-up

Le të vendosim për emrat e dosjeve dhe skedarëve të aplikacionit:

  • Dosja rndstr në direktorinë kryesore
    • burimi - skedari nga i cili do të marrim rreshta
    • rndstr.py - një nënprogram që printon një rresht të rastësishëm nga skedari burim në tastierë
    • rndstr.sh - skedar skripti

Ne krijojmë drejtorinë e aplikacionit dhe kalojmë në të dhe krijojmë skedarë atje.

Dy pikat e para të planit të skenarit mund të kombinohen nga një tubacion, si rezultat, duke përdorur Termux:API marrim:

#!/bin/bash

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

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

Në skedarin burim mund të vendosni çdo tekst të ndarë logjikisht në rreshta, vendosa të vendos aforizma:

Lista e skedarëve burimor

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

Gjithçka që duhet të bëjmë është të krijojmë një nënprogram që nxjerr një varg të rastësishëm nga skedari burimor.
Le të përshkruajmë algoritmin e nënprogramit:

  1. Hapni skedarin burimor
  2. Numërimi i numrit të rreshtave në një skedar të hapur
  3. Mbyllni skedarin (nuk ka kuptim ta mbani të hapur për një kohë të gjatë)
  4. Gjeneroni një numër të plotë të rastësishëm brenda numrit të rreshtave në skedarin burimor
  5. Hapni skedarin burimor
  6. Ne shfaqim një rresht nën numrin e numrit të gjeneruar
  7. Mbyllja e skedarit

Le të zbatojmë algoritmin në Python (unë shkruaj nën 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  #  закрываем файл

Pasi të krijohen dhe shkruhen skedarët, duhet t'i jepni skedarit të drejta ekzekutimi rndstr.sh, dhe krijoni një pseudonim për nisje të shpejtë.

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

Tani duke hyrë në terminal rnst do të marrim një aforizëm të rastësishëm në clipboard, i cili, për shembull, mund të përdoret në korrespondencë.

Kështu që ne shkruam të paktën diçka të dobishme. Relativisht e dobishme.

Ps

Në hapin e fundit, qëllimisht nuk ofrova pamje nga ekrani dhe nuk analizova në detaje disa nga veprimet, duke përshkruar vetëm përmbajtjen e skedarëve, në mënyrë që lexuesit të kishin mundësinë të punonin vetë.

Mendoj se ia vlen ta përfundosh këtë “Termux hap pas hapi”. Sigurisht, këto janë vetëm hapat e parë, por tani ju mund të ecni përpara vetë.

Fillimisht, kam planifikuar të tregoj në këtë seri se si të përdor nmap, sqlmap, por edhe pa mua tashmë ka shumë artikuj mbi këtë temë. Nëse dëshironi të vazhdoj serinë “Termux hap pas hapi”, atëherë ka një sondazh më poshtë dhe në komente mund të sugjeroni se çfarë tjetër të shkruani.

Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. Hyni, te lutem

Vazhdoni “Termux hap pas hapi”?

  • Po

  • Jo

2 përdorues kanë votuar. Nuk ka abstenime.

Burimi: www.habr.com

Shto një koment