I Vi har lært de grundlæggende kommandoer i Termux, sat SSH-forbindelse op til PC'en, lært at oprette aliaser og installeret nogle nyttige værktøjer. Denne gang er vi klar til at tage skridtet videre, og vi vil:
- få indsigt i Termux:API
- installere Python og nano, samt skrive "Hello, world!" i Python
- få kendskab til bash-scripts og skrive et script ved hjælp af Termux:API
- ved hjælp af et bash-script, Termux:API og Python skrive et simpelt program
Da vi nu forstår, hvad de indtastede kommandoer gør, vil jeg ikke gå så grundigt ind i hvert skridt fra nu af, men hvor der måtte opstå vanskeligheder, vil jeg bestemt give forklaringer.
Jeg bruger ofte aliaser, så de forkortelser, der anvendes i denne del, vises her:
alias updg='apt update && apt upgrade'
alias py='python'Planen er klar, lad os komme i gang! Og glem selvfølgelig ikke den "magiske Tab" ().
Trin 4
Dykker ned i Termux:API kaninhullet
API, hvor meget er der ikke i dette ord for kodernes hjerter
Hvis vi ikke berører emnet Termux:API, kunne alle vores skridt samles til en simpel genfortælling af en slags brochure som "Linux for Dummies", som det blev rigtigt bemærket i kommentarerne til den første del.
Lad os først installere Termux:API fra Google Play Butik (det er en god idé at genstarte Termux efterfølgende):

Dernæst skal vi installere API-pakken i Termux-konsollen:
updg # Glem ikke aliaserne
apt install termux-apiTil eksperimenter bruger jeg Android 5.1.1, for ejere af Android 7 er det nødvendigt at "beskytte" Termux: API ved at gå ind i ‘Indstillinger’ > ‘Beskyttede applikationer’, ellers vil API-opkald som termux-battery-status, hænge. (Se. )
Nu er det tid til at lære nærmere om de opnåede funktioner. Den nyeste og mest detaljerede beskrivelse af Termux:API kan findes på . Jeg vil forsøge at vælge de mest illustrative og interessante elementer, som gør det muligt at få erfaring til selvstændigt arbejde i fremtiden.
Flere eksempler på Termux:API
- termux-battery-status
Returnerer batteristatus

- termux-brightness
Sætter skærmens lysstyrke fra 0 til 255

- termux-toast
Viser en midlertidig pop-up-meddelelse

- termux-torch
Tænder lygten

- termux-wifi-scaninfo
Returnerer information om den seneste scanning af Wi-Fi-netværk

Det er ikke svært at se, at de returnerede værdier er strenge, ordbøger, lister over ordbøger, med andre ord datatyper, som Python håndterer fint, så næste skridt er at installere det.
Trin 5
Vi installerer Python og nano
For at installere Python skriver vi i terminalen:
updg
apt install python
apt install python2Nu har vi installeret både Python 2 og 3.
I færd med at skrive artiklen, stødte jeg på en anden teksteditor, nano, som jeg fandt mere tiltalende end vim; lad os installere den:
apt install nanoDet er nemmere at bruge end vim, og nano har en mere venlig grænseflade. På Android-enheder er vim dog mere praktisk.
HelloWorld på Python i Termux
I det store og hele kunne vi have undgået dette punkt, men at installere Python i Termux og ikke skrive HelloWorld ville være en skam.
Jeg har ikke til hensigt at lære nogen Python, så dem der ikke kender det, kan blot kopiere koden (eller begynde at studere det selv, heldigvis er der masser af litteratur), og dem der kender det, kan selv finde på noget. Og jeg vil samtidig vise, hvordan man indtaster tekst i terminalen uden en editor.
cat >hello-world.py
# Hvis man ikke angiver kilden (jeg minder om cat 1.txt > 2.txt)
# så vil cat tage data fra standard input,
# sagt på en anden måde, det der skrives på tastaturet.
str = 'Hello, world!' # tildeler variablen str værdien "Hello, world!"
print (str) # udskriver værdien fra variablen str på skærmen
# Ctrl + D for at afslutte indtastningen og gemme filen (hello-world.py)
py hello-world.py # kører filen (py er et alias for python)
Hvis du under indtastningen ikke bemærker en fejl og allerede har trykket Enter, vil du ikke kunne gå tilbage til linjen ovenfor; afslut indtastningen ved at trykke Ctrl + D (du kan også bare afbryde med Ctrl + Z) og start forfra. Da vi brugte ‘>’, vil filen blive overskrevet helt. Derfor anbefaler jeg ikke at bruge denne indtastningsmetode, hvis du ikke er sikker på at skrive koden korrekt første gang.
Trin 6
Bash-scripts
Bash-scripts er en fremragende måde at automatisere arbejdet i terminalen. Et script er en fil med filtypen .sh (filtypen er ikke obligatorisk) indeholdende et sæt terminalkommandoer, hvoraf nogle vi allerede har lært. Her er , alt bør fungere, men vær opmærksom på, at dette er en liste for "voksne" Linux-systemer og ikke for Termux, men her er simpelthen .
Ved hjælp af scripts kan man automatisere stort set alle monotone handlinger. Lad os skrive et simpelt bash-script, der viser værdien fra en variabel, som det selv har oprettet; jeg vil igen bruge cat, men du kan bruge en almindelig teksteditor, og de, der ønsker at træne, kan bruge echo.
cat >test.sh
export str="Hej, Habr!"
# export opretter variablen str
# og tildeler den værdien "Hej, Habr!"
# Sæt ikke mellemrum før og efter '='
echo $str # For at referere til variabler sættes '$' før dem
# Ctrl + D
# .\/test.sh for at køre scriptet, men hvis du gør det nu, vil der være en fejl
# For at undgå fejlen skal du gøre test.sh-filen eksekverbar
chmod +x test.sh
# chmod ændrer adgangsrettigheder (+ tilføje / - fjerne)
# ‘+x’ betyder, at vi gør filen eksekverbar
.\/test.sh # Starter udførelsen af vores script
Bash-script med Termux:API
Lad os skrive noget, der adskiller sig fra de velkendte HelloWorlds, men som er lige så unyttigt. Vores script vil være:
- at udføre API-anmodningen termux-battery-status
- at gemme de modtagne data i filen test.txt
- at vise data fra filen på skærmen
- at udføre det tidligere skrevne program hello-world.py
- at skrive de modtagne data fra programmet til filen test.txt
- at vise data fra filen på skærmen
- at overføre data fra filen til udklipsholderen
- at vise indholdet af udklipsholderen på skærmen
- at vise en pop-op-meddelelse med data fra udklipsholderen
Først opretter vi en mappe til arbejdet og kopierer hello-world.py derover som test.py; vi opretter i denne mappe filerne test.sh og test.txt:
mkdir bashscript
cat hello-world.py >> bashscript/test.py
cd bashscript/
touch test.sh test.txt # touch opretter filer
chmod +x test.shNu skriver vi scriptet til filen test.sh på enhver bekvem måde:
#!/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 # пункт 9Nu, mens vi er i mappen bashscript, skriver vi .\/test.sh ser på terminalen på Android-enheden:

Så har vi skrevet det planlagte bash-script. Man kan supplere det med at vise information om udførelsen af hver handling i konsollen (ved hjælp af echo), det overlader jeg til læserne.
Trin 7
Lad os gøre noget nyttigt
Relativt nyttigt
Lad os formulere en teknisk specifikation
Programmet skal efter opstart placere en tilfældig sætning fra filen i udklipsholderen og underrette om dette med en pop-op-meddelelse.
Vi tager udgangspunkt i et bash-script; den tilfældige sætning fra filen vil vi udtrække ved hjælp af en underprogram på Python. Lad os lave en arbejdsplan for scriptet:
- Køre underprogrammet
- Overfør resultatet af underskudsprogrammet til udklipsholderen
- Vis en pop op-besked
Lad os bestemme navne til applikationens mapper og filer:
- mappen rndstr i hjemmebiblioteket
- source — filen vi henter strenge fra
- rndstr.py — underskudsprogrammet der viser en tilfældig streng fra filen source i konsollen
- rndstr.sh — skriptfilen
Vi opretter applikationens mappe og flytter ind i den for at oprette filerne.
De første to punkter i skriptplanen kan kombineres i en pipeline, og ved at bruge Termux:API får vi:
#!/bin/bash
python ~/rndstr/rndstr.py | termux-clipboard-set # 1 и 2 пункты плана работы
termux-toast "OK" # 3 пункт. Выводим всплывающее сообщение "ОК"I filen source kan du placere enhver tekst logisk adskilt på linjer, jeg besluttede at placere aforismer:
Listing af filen source
Ærlighed er ikke sandhed. L. Lavelle
Hold ud og afhold dig. Epiktet
Kun det, der er uselvisk, er ædel. J. La Bruyère
Vær fornuftigt modig. B. Gracián
Godhed er bedre end skønhed. G. Heine
For store bedrifter er utrættelig vedholdenhed nødvendig. F. Voltaire
Hvis du vil have, at andre altid skal tilfredsstille dig, skal du tjene dig selv. B. Franklin
Overdrevent beskedenhed er ikke andet end skjult stolthed. A. Chénier
Meget kloge mennesker begynder at blive mistænkt, hvis man ser deres forlegenhed. F. Nietzsche
Fattigdom indikerer mangel på midler, ikke mangel på ære. D. Boccaccio
Man skal passe på ikke at lade beskedenhed blive til ydmygelse. A. Bakihanov
Den, der giver afkald på meget, kan tillade sig meget. J. Chardon
Når vi får betalt for en ædel gerning, bliver den taget fra os. N. Chamfort
Det er ikke skræmmende at få ingenting, men det er trist at miste det, man har fået. Claudius Aelianus
Det er lettere at tålmodigt udholde det, vi ikke kan ændre. Horats
Man bliver træt af at vente, men hvor meget værre ville det være, hvis der ikke var noget at vente på. B. Shaw
Alt kommer til tiden, hvis folk kan vente. F. Rabelais
Med vores tålmodighed kan vi opnå mere end med styrke. E. Burke
Man må kunne udholde det, man ikke kan undgå. M. Montaigne
Den, der er modig i handling, er ikke skræmt af ord. Sofokles
Jeg elsker ikke at kæmpe, jeg elsker at vinde. B. Shaw
En jaget og presset kat bliver til en tiger. M. Cervantes
En værdig person følger ikke andre menneskers spor. Konfucius
Et stort sind vil udtrykke sin styrke ikke kun ved at tænke, men også ved at leve. R. Emerson
Ære er en ufordelagtig vare. Den er dyr, men svær at bevare. O. Balzac
Beherskelse og passende samtaler er mere værd end veltalenhed. F. Bacon
Den, der ikke kan holde mund, kan heller ikke tale. Seneca den Yngre
Gode manerer består af små ofre. F. Chesterfield
En god mand er ikke den, der kan gøre godt, men den, der ikke kan gøre ondt. V. Klyuchevsky
Udsæt ikke uigenkaldelige domme! Augustin
Intet er for meget! SolonVi skal oprette et underprogram, der trækker en tilfældig linje fra filen source.
Lad os beskrive algoritmen for underprogrammets arbejde:
- Åbn filen source
- Tæl antallet af linjer i den åbne fil
- Luk filen (der er ikke grund til at holde den åben unødigt)
- Generer et tilfældigt heltal inden for antallet af linjer i filen source
- Åbn filen source
- Udskriver linjen med det genererede nummer
- Lukker filen
Implementerer algoritmen i Python (jeg skriver til Python 3.7):
import random # importerer til generering af tilfældige tal
import os # til at få stien
path = os.path.abspath(__file__) # får den direkte sti til filen rndstr.py
path = os.path.dirname(path) # konverterer til stien til mappen
path = path + 'source' # konverterer til stien til filen source
f = open(path) # åbner filen
i = 0 # nulstiller tælleren
for str in f: i+=1 # tæller linjerne i filen
f.close # lukker filen
j = int(round(i * random.random())) # genererer et tilfældigt heltal fra 0 til i
f = open(path) # åbner filen
i = 0 # nulstiller tælleren
for str in f: # gennemgår linjerne i filen
if i == j: # hvis linjetælleren svarer til det genererede nummer
print (str, end='') # udskriver linjen uden at gå til en ny linje
break # forlader løkken
i+=1 # øger tælleren med 1
f.close # lukker filenNår filerne er oprettet og skrevet, skal du give filen rettigheder til at køre rndstr.sh, og oprette et alias for hurtig opstart.
alias rnst="~/rndstr/rndstr.sh"Nu kan vi skrive i terminalen rnst og få et tilfældigt aforisme i udklipsholderen, som f.eks. kan bruges i korrespondance.
Så har vi skrevet noget nyttigt. Relativt nyttigt.
P.s.
Jeg undlod bevidst at inkludere skærmbilleder i det sidste trin og gik ikke i dybden med nogle handlinger, men kun beskrevet indholdet af filerne, så læserne havde mulighed for at arbejde selvstændigt.
På denne 'Termux trin for trin', mener jeg, at det er tid til at afslutte. Dette er selvfølgelig kun de allerførste skridt, men nu kan du bevæge dig fremad selv.
Oprindeligt planlagde jeg at vise, hvordan man bruger nmap, sqlmap i denne cyklus, men der er allerede mange artikler om emnet uden mig. Hvis der er interesse for, at jeg fortsætter cyklussen 'Termux trin for trin', så er der nedenfor en afstemning, og i kommentarerne kan du foreslå, hvad jeg ellers skal skrive om.
Kun registrerede brugere kan deltage i undersøgelsen. , please.
Vil du fortsætte 'Termux trin for trin'?
Ja
Nej
To brugere har stemt. Ingen afholdte sig.
Kilde: habr.com





