I Vi har bekantat oss med de grundläggande kommandona i Termux, ställt in SSH-anslutning med PC:n, lärt oss att skapa alias och installerat flera användbara verktyg. Denna gång går vi ännu längre, vi kommer att:
- få veta mer om Termux:API
- installera Python och nano, samt skriva "Hello, world!" på Python
- få veta om bash-skript och skriva ett skript med användning av Termux:API
- använda ett bash-skript, Termux:API och Python för att skriva ett enkelt program
Eftersom vi nu förstår vad de inmatade kommandona gör, kommer jag inte att beskriva varje steg så detaljerat framöver, men där det kan uppstå svårigheter kommer jag definitivt att förklara.
Jag använder ofta alias, så de förkortningar som används i denna del visas här:
alias updg='apt update && apt upgrade'
alias py='python'Planen är klar, vi kan börja! Glöm inte den "magiska Tab" ().
Steg 4
Vi dyker ner i kaninhålet Termux:API
API, så mycket finns i detta ord för kodarens hjärta
Om vi inte berör ämnet Termux:API skulle alla våra steg kunna sammanfattas i en enkel återberättelse av någon broschyr som "Linux för nybörjare", vilket på ett rättvist sätt påpekades i kommentarerna till del ett.
Först ska vi installera Termux:API från Google Play Market (det kan vara bra att starta om Termux efteråt):

Därefter behöver vi installera API-paketet i Termux-konsolen:
updg # Kom ihåg aliasen
apt install termux-apiFör experimenten använder jag Android 5.1.1; för ägare av Android 7 måste du "skydda" Termux:API, genom att gå till 'Inställningar' > 'Säkerhetsappar', annars kan API-anrop som termux-battery-status, hänga sig. (Se. )
Nu är det dags att bekanta sig närmare med de förvärvade möjligheterna. Den senaste och mest detaljerade beskrivningen av Termux:API går att hitta på . Jag ska försöka välja de mest tydliga och intressanta, som kommer att hjälpa till att träna för framtida självständigt arbete.
Några exempel på Termux:API
- termux-battery-status
Återger batteristatus

- termux-brightness
Ställer in skärmens ljusstyrka från 0 till 255

- termux-toast
Visar en tillfällig popup-notifikation

- termux-torch
Slår på ficklampan

- termux-wifi-scaninfo
Återger information om den senaste Wi-Fi-nätverksscanningen

Det är inte svårt att märka att de returnerade värdena är strängar, ordböcker, listor av ordböcker, i allmänhet datatyper som Python fungerar utmärkt med, så nästa steg blir att installera det.
Steg 5
Vi installerar Python och nano
För att installera Python skriver vi i terminalen:
updg
apt install python
apt install python2Nu har vi installerat både Python 2 och 3.
Under arbetet med artikeln upptäckte jag också en textredigerare som heter nano, som jag gillar mer än vim, låt oss installera den:
apt install nanoDet är enklare att använda än vim, och nano har ett mer användarvänligt gränssnitt. På en Android-enhet är vim dock smidigare.
HelloWorld i Python i Termux
I stort sett kunde vi ha hoppat över det här steget, men att installera Python i Termux och inte skriva HelloWorld tycker jag är en dålig stil.
Jag har inte som mål att lära någon Python, så de som inte kan kan helt enkelt kopiera koden (eller börja studera på egen hand, det finns mycket litteratur tillgänglig), och de som kan kan själva skapa något. Och jag ska även visa ett sätt att skriva text i terminalen utan redigerare.
cat >hello-world.py
# Om du inte anger en källa (kom ihåg cat 1.txt > 2.txt)
# så kommer cat att ta data från standard inmatningsström,
# enklare sagt det som skrivs in från tangentbordet.
str = 'Hello, world!' # tilldelar variabeln str värdet "Hello, world!"
print (str) # skriver ut värdet från variabeln str på skärmen
# Ctrl + D för att avsluta inmatningen och spara filen (hello-world.py)
py hello-world.py # kör filen (py är ett alias för python)
Om du inte märker ett fel under inmatningen och redan har tryckt på Enter, kommer du inte kunna gå tillbaka en rad, så avsluta inmatningen genom att trycka på Ctrl + D (du kan även avbryta med Ctrl + Z) och börja om. Eftersom vi använde '>' kommer filen att skrivas över helt. Av denna anledning rekommenderar jag inte att använda den här inmatningsmetoden om du inte är säker på att du skriver koden direkt utan fel.
Steg 6
Bash-skript
Bash-skript är ett utmärkt sätt att automatisera arbete i terminalen. Ett skript är en fil med .sh (även om filändelsen inte är nödvändig) som innehåller en uppsättning terminalkommandon, varav några redan har studerats. Här är , allt ska fungera, men observera att detta är en lista för "fullfjädrad" Linux och inte för Termux, och här är helt enkelt .
Med hjälp av skript kan man automatisera nästan alla monotona uppgifter. Låt oss skriva ett enkelt bash-skript som skriver ut värdet från en variabel som det själv har skapat. Jag kommer återigen att använda cat, men ni kan använda en vanlig textredigerare, och de som särskilt vill träna sig kan använda echo.
cat >test.sh
export str="Hej, Habr!"
# export skapar variabeln str
# och tilldelar den värdet "Hej, Habr!"
# Sätt inga mellanslag före eller efter ‘=’
echo $str # För att referera till variabler sätter man ‘$’ före dem
# Ctrl + D
# .\/test.sh för att köra skriptet, men om man gör det nu kommer det att ge ett fel
# för att bli av med felet måste man göra filen test.sh körbar
chmod +x test.sh
# chmod ändrar åtkomsträttigheter (+ lägg till / - ta bort)
# ‘+x’ betyder att vi gör filen körbar
.\/test.sh # Startar exekveringen av vårt skript
Bash-skript med Termux:API
Låt oss skriva något som skiljer sig från de välkända HelloWorld-programmen, men som är lika meningslöst. Vårt skript kommer att:
- utföra API-begäran termux-battery-status
- spara den mottagna datan i filen test.txt
- visa datan från filen på skärmen
- köra det tidigare skrivna programmet hello-world.py
- spara data från programmet i filen test.txt
- visa datan från filen på skärmen
- kopiera data från filen till urklipp
- visa innehållet i urklipp på skärmen
- visa ett popup-meddelande med data från urklipp
Först skapar vi en mapp för arbetet och kopierar hello-world.py dit som test.py, vi skapar filerna test.sh och test.txt i denna mapp:
mkdir bashscript
cat hello-world.py >> bashscript/test.py
cd bashscript/
touch test.sh test.txt # touch skapar filer
chmod +x test.shNu kan vi på något bekvämt sätt skriva skriptet i filen 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 # пункт 9Nu går vi till mappen bashscript och skriver ./test.sh vi observerar i terminalen på Android-enheten:

Här har vi skrivit det planerade bash-skriptet. Man kan späda ut dess utmatning med information om utförandet av varje åtgärd (med hjälp av echo), detta lämnar jag åt läsarna.
Steg 7
Låt oss göra något nyttigt
Relativt nyttigt
Formulera en teknisk specifikation
Programmet ska efter starten placera en slumpmässig rad från filen i urklipp och meddela detta med ett popup-meddelande.
Vi utgår från bash-skriptet, en slumpmässig rad från filen kommer att extraheras med hjälp av ett Python-program. Låt oss formulera en arbetsplan för skriptet:
- Köra underprogrammet
- Överföra resultatet av understödsprogrammet till urklipp
- Visa ett popup-meddelande
Låt oss fastställa namnen på katalogen och applikationsfilerna:
- mappen rndstr i hemkatalogen
- source — filen från vilken vi kommer att hämta rader
- rndstr.py — understödsprogrammet som skriver ut en slumpmässig rad från filen source till konsolen
- rndstr.sh — skriptfilen
Vi skapar applikationens katalog och flyttar dit för att skapa filerna.
De första två punkterna i skriptplanen kan kombineras med en pipeline, och får därmed, med hjälp av Termux:API, följande:
#!/bin/bash
python ~/rndstr/rndstr.py | termux-clipboard-set # 1 и 2 пункты плана работы
termux-toast "OK" # 3 пункт. Выводим всплывающее сообщение "ОК"I filen source kan du placera vilken text som helst logiskt uppdelad i rader, jag valde att inkludera citat:
Listing av filen source
Äkthet är inte sanning. L. Lavelle
Tåla och avhåll dig. Epiktetos
Endast det som är osjälviskt är ädelt. J. La Bruyère
Var klokt modig. B. Gracián
Godhet är bättre än skönhet. G. Heine
För stora gärningar krävs oförtröttlig uthållighet. F. Voltaire
Om du vill att andra alltid ska tillfredsställa dig, betjänar du dig själv. B. Franklin
Överdriven blygsamhet är inget annat än dold stolthet. A. Chaine
Mycket intelligenta människor börjar man inte lita på om man ser deras förlägenhet. F. Nietzsche
Fattigdom anger brist på resurser, inte brist på ädelhet. D. Boccaccio
Man måste akta sig för att driva blygsamhet till förnedringens grad. A. Bakihanov
Den som avstår från mycket kan tillåta sig mycket. J. Chardon
När vi får betalt för en ädel handling, tar man den ifrån oss. N. Chamfort
Att inte få något alls är inte skrämmande, men att förlora det man har fått är sårande. Klaudius Elianus
Det är lättare att tålmodigt hantera det som vi inte kan ändra. Horatius
Man blir trött på att vänta, men hur mycket värre skulle det vara om det inte fanns något att vänta på. B. Shaw
Allt kommer i tid, om människor kan vänta. F. Rabelais
Med vårt tålamod kan vi uppnå mer än med styrka. E. Burke
Man måste kunna uthärda det som inte går att undvika. M. Montaigne
Den som är modig i handling fruktar inte ord. Sofokles
Jag älskar inte att slåss, jag älskar att vinna. B. Shaw
En förföljd och pressad katt förvandlas till ett lejon. M. Cervantes
En värdig människa går inte i spåren av andra. Konfucius
Den stora tanken visar sin kraft inte bara genom att kunna tänka, utan också genom att kunna leva. R. Emerson
Berömmelse är en olönsam vara. Den kostar mycket och bevaras dåligt. O. Balzac
Återhållsamhet och lämplighet i samtal är mer värdefullt än talekonst. F. Bacon
Den som inte kan vara tyst, kan inte tala heller. Seneca den yngre
Goda manerer består av små uppoffringar. F. Chesterfield
En god människa är inte den som kan göra gott, utan den som inte kan göra ont. V. Kljuchevsky
Uttala inte oåterkalleliga omdömen! Augustinus
Inget för mycket! SolonVi måste skapa ett underprogram för att extrahera en slumpmässig rad från filen source.
Vi skriver ner algoritmen för hur underprogrammet fungerar:
- Öppna filen source
- Räkna antalet rader i den öppna filen
- Stäng filen (det är onödigt att ha den öppen längre än nödvändigt)
- Vi genererar ett slumpmässigt heltal inom antalet rader i filen source
- Öppna filen source
- Vi skriver ut raden med det genererade numret
- Vi stänger filen
Vi implementerar algoritmen i Python (jag skriver för Python 3.7):
import random # importerar för att generera slumpmässiga tal
import os # för att få sökvägen
path = os.path.abspath(__file__) # får den direkta sökvägen till filen rndstr.py
path = os.path.dirname(path) # omvandlar till sökvägen till katalogen
path = path + '\/source' # omvandlar till sökvägen till filen source
f = open(path) # öppnar filen
i = 0 # nollställer räknaren
for str in f: i+=1 # räknar filens rader
f.close # stänger filen
j = int(round(i * random.random())) # genererar ett helt slumpmässigt tal mellan 0 och i
f = open(path) # öppnar filen
i = 0 # nollställer räknaren
for str in f: # loopar igenom raderna i filen
if i == j: # om räknaren är lika med det genererade numret
print (str, end='') # skriver ut raden utan att bryta raden
break # avslutar loopen
i+=1 # ökar räknaren med 1
f.close # stänger filenEfter att filerna har skapats och skrivits, måste vi ge körbehörighet till filen rndstr.sh, och skapa ett alias för snabb körning.
alias rnst="~\/rndstr\/rndstr.sh"Nu kan vi skriva i terminalen rnst så får vi en slumpmässig aforism i urklippet, som till exempel kan användas i kommunikation.
Så, vi har skrivit något användbart. Relativt användbart.
P.s.
Jag valde medvetet att inte inkludera skärmdumpar i sista steget och inte gå igenom vissa åtgärder i detalj, utan bara skriva innehållet i filerna, för att ge läsarna möjlighet att arbeta på egen hand.
Med detta "Termux steg för steg" tror jag att vi kan avsluta. Självklart är det endast de första stegen, men nu kan du fortsätta framåt själv.
Ursprungligen planerade jag att visa hur man använder nmap, sqlmap i denna serie, men det finns redan många artiklar om detta ämne. Om det finns önskemål att jag fortsätter serien "Termux steg för steg", så finns det en omröstning nedan och ni kan föreslå vad jag ska skriva om i kommentarerna.
Endast registrerade användare kan delta i omröstningen. , tack.
Vill du fortsätta "Termux steg för steg"?
Ja
Ingen
2 användare röstade. Ingen avstod.
Källa: habr.com





