Termux trin for trin (del 2)

В sidste del vi stiftede bekendtskab med de grundlæggende kommandoer i Termux, oprettede en SSH-forbindelse til en pc, lærte at oprette aliass og installerede flere nyttige hjælpeprogrammer. Denne gang skal vi gå endnu længere, vi er med dig:

  • lære om Termux:API
  • installer Python og nano, og skriv "Hej, verden!" i Python
  • lær om bash-scripts og skriv et script ved hjælp af Termux:API
  • ved hjælp af et bash-script, Termux:API og Python vil vi skrive et simpelt program

Da vi nu forstår, hvad inputkommandoerne gør, vil jeg fra næste trin ikke beskrive hver handling så detaljeret, men hvor der kan være vanskeligheder, vil jeg helt sikkert forklare.

Jeg bruger meget aliaser, så forkortelserne brugt i denne del er vist her:

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

Planen er klar, du kan begynde! Og selvfølgelig, glem ikke den "magiske fane" (Se del 1).

Trin 4

Dykning ned i Termux:API-kaninhullet

API hvor meget er smeltet sammen i dette ord for koderens hjerte

Hvis vi ikke berører emnet Termux: API, så kunne alle vores trin reduceres til en simpel genfortælling af en eller anden brochure som "Linux for Dummies", som det med rette blev bemærket i kommentarerne til den første del.

Installer først Termux:API fra Google Play Market (det skader ikke at genstarte Termux bagefter):

Termux trin for trin (del 2)

Dernæst skal vi installere API-pakken i Termux-konsollen:

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

Til eksperimenter bruger jeg Android 5.1.1, for Android 7 skal ejere "beskytte" Termux: API ved at gå til 'Indstillinger' > 'Beskyttede apps', ellers API-kald som f.eks. termux-battery-status, vil hænge. (Cm. projekt wiki)

Nu er det værd at se nærmere på de erhvervede muligheder. Den seneste og mest detaljerede beskrivelse af Termux:API kan findes på projekt wiki. Jeg vil prøve at vælge det mest visuelle og interessante, som vil give mig mulighed for at fylde min hånd til selvstændigt arbejde i fremtiden.

Nogle Termux:API eksempler

  • termux-batteri-status
    Returnerer batteriets tilstand
    Termux trin for trin (del 2)
  • termux-lysstyrke
    Indstiller skærmens lysstyrke fra 0 til 255
    Termux trin for trin (del 2)
  • termux-toast
    Viser en midlertidig toast-meddelelse
    Termux trin for trin (del 2)
  • termux-fakkel
    Inkluderer lommelygte
    Termux trin for trin (del 2)
  • termux-wifi-scaninfo
    Returnerer oplysninger om den sidste scanning af Wi-Fi-netværk
    Termux trin for trin (del 2)

Det er let at se, at returværdierne er strenge, ordbøger, lister over ordbøger, generelt datatyper, som Python fungerer godt med, så næste trin er at sætte det op.

Trin 5

Installer Python og nano

For at installere Python skal du skrive i terminalen:

updg
apt install python
apt install python2

Vi har nu 2 og 3 Python installeret.

Mens jeg arbejdede på artiklen, opdagede jeg en anden nano-teksteditor, som jeg kunne lide mere end vim, lad os installere den:

apt install nano

Det er nemmere at bruge end vim, og nano har en mere brugervenlig grænseflade. På en Android-enhed er vim stadig mere praktisk.

HelloWorld i Python på Termux

I det store og hele var det muligt at undvære denne vare, men at sætte Python i Termux og ikke skrive HelloWorld, er efter min mening dårlig maner.

Jeg sætter mig ikke som mål at undervise nogen i Python, så dem, der ikke kender det, kan blot kopiere koden (eller begynde at lære på egen hånd, da der er litteratur nok), og dem, der ved, kan lave noget selv. Og jeg vil stadig "under dække" vise en måde at indtaste tekst i terminalen uden en 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 trin for trin (del 2)

Hvis du ikke har bemærket en fejl under indtastningsprocessen og allerede har trykket på Enter, så vil du ikke være i stand til at gå til linjen ovenfor. For at gøre dette skal du afslutte indtastningen ved at trykke på Ctrl + D (du kan generelt afbryde Ctrl + Z) og gentag alt fra begyndelsen. Da vi brugte '>' vil filen blive fuldstændigt overskrevet. Af denne grund anbefaler jeg ikke at bruge denne inputmetode, medmindre du er sikker på, at du vil skrive koden med det samme uden fejl.

Trin 6

Bash scripts

Bash-scripts er en fantastisk måde at automatisere dit terminalarbejde på. Scriptet er en fil med filtypenavnet .sh (udvidelsen er valgfri), der indeholder et sæt terminalkommandoer, hvoraf nogle vi allerede har studeret. Her liste over de fleste kommandoer, alt burde virke, men bemærk at dette er en liste for "voksen" Linux, ikke Termux, men bare fantastisk materiale om bash-scripts.

Ved hjælp af scripts kan du automatisere næsten alle monotone handlinger. Lad os skrive det enkleste bash-script, der viser værdien fra den variabel, han oprettede, jeg bruger cat igen, du kan bruge en normal teksteditor, og dem, der især vil træne sig selv, kan bruge 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 trin for trin (del 2)

Bash-script med Termux:API

Lad os skrive noget andet end de berygtede HelloWorlds, men lige så ubrugeligt. Vores script bliver:

  1. udfør termux-battery-status API-anmodningen
  2. gem de modtagne data i filen test.txt
  3. udskrive data fra en fil til skærmen
  4. kør det tidligere skrevne hello-world.py-program
  5. skriv data modtaget fra programmet til filen test.txt
  6. udskrive data fra en fil til skærmen
  7. flytte data fra fil til udklipsholder
  8. vise indholdet af udklipsholderen
  9. vise en pop op-meddelelse med data fra udklipsholderen

Først skal du oprette en mappe til arbejde og kopiere hello-world.py dertil som test.py, oprette test.sh og test.txt filer i denne mappe:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Nu, på enhver bekvem måde, skriv scriptet til test.sh-filen:

#!/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

Når vi nu er i bashscript-mappen, skriver vi ./test.sh vi observerer i terminalen på Android-enheden:

Termux trin for trin (del 2)

Så vi skrev det planlagte bash-manuskript. Du kan fortynde det med output til konsollen af ​​information om udførelsen af ​​hver handling (ved hjælp af ekko), jeg vil overlade dette til læserne.

Trin 7

Lad os gøre noget nyttigt

Relativt brugbart

Lad os formulere kommissoriet
Efter lanceringen skal applikationen placere en tilfældig linje fra filen på udklipsholderen og give besked om det med en pop-up-meddelelse.

Vi vil tage et bash-script som grundlag, vi vil udtrække en tilfældig linje fra en fil ved hjælp af en Python-underrutine. Lad os lave en arbejdsplan for manuskriptet:

  1. Kør subrutine
  2. Overfør resultatet af subrutinen til udklipsholderen
  3. Vis pop op-meddelelse

Lad os definere navnene på mappen og programfilerne:

  • rndstr mappe i hjemmemappe
    • kilde - filen, som vi tager linjer fra
    • rndstr.py - en underrutine, der viser en tilfældig linje fra kildefilen til konsollen
    • rndstr.sh - script-fil

Opret en applikationsmappe og flyt til den og opret filer der.

De første to punkter i scriptplanen kan kombineres af en pipeline, som et resultat, ved hjælp af Termux: API får vi:

#!/bin/bash

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

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

I kildefilen kan du sætte enhver tekst logisk opdelt i linjer, jeg besluttede at sætte aforismer:

Kildefilliste

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

Vi skal bare lave en underrutine, der udtrækker en tilfældig streng fra kildefilen.
Lad os skrive subrutinens algoritme:

  1. Åbn kildefil
  2. Tæller antallet af linjer i en åben fil
  3. Luk filen (der er intet til at holde den åben i ekstra tid)
  4. Vi genererer et tilfældigt heltal inden for antallet af linjer i kildefilen
  5. Åbn kildefil
  6. Vi udskriver en linje under nummeret på det genererede nummer
  7. Lukning af filen

Vi implementerer algoritmen i Python (jeg skriver under 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  #  закрываем файл

Efter at filerne er oprettet og skrevet, skal du give filudførelsestilladelser rndstr.sh, og opret et alias til hurtig lancering.

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

Skriver nu i terminal rnst vi får en tilfældig aforisme på klippebordet, som fx kan bruges i korrespondance.

Her har vi i det mindste skrevet noget brugbart. Relativt brugbart.

Ps

I det sidste trin gav jeg med vilje ikke skærmbilleder og analyserede ikke i detaljer nogle af handlingerne, idet jeg kun skrev indholdet af filerne, så læserne har mulighed for at arbejde på egen hånd.

På denne "Termux step by step" synes jeg det er værd at afslutte. Det er selvfølgelig kun de allerførste skridt, men nu kan du selv komme videre.

Oprindeligt planlagde jeg at vise i denne cyklus, hvordan man bruger nmap, sqlmap, men uden mig er der allerede en masse artikler om dette emne. Hvis du vil have mig til at fortsætte "Termux step by step" cyklussen, så er der en undersøgelse nedenfor, og i kommentarerne kan du foreslå, hvad du ellers skal skrive om.

Kun registrerede brugere kan deltage i undersøgelsen. Log ind, Vær venlig.

Fortsæt "Termux trin for trin"?

  • Ja

  • Nej

2 brugere stemte. Der er ingen undladelser.

Kilde: www.habr.com

Tilføj en kommentar