Termux steg för steg (Del 2)

I den föregående delen 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" (Se Del 1).

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):

Termux steg för steg (Del 2)

Därefter behöver vi installera API-paketet i Termux-konsolen:

updg # Kom ihåg aliasen
apt install termux-api

Fö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. projektets wiki)

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å projektets wiki. 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 steg för steg (Del 2)
  • termux-brightness
    Ställer in skärmens ljusstyrka från 0 till 255
    Termux steg för steg (Del 2)
  • termux-toast
    Visar en tillfällig popup-notifikation
    Termux steg för steg (Del 2)
  • termux-torch
    Slår på ficklampan
    Termux steg för steg (Del 2)
  • termux-wifi-scaninfo
    Återger information om den senaste Wi-Fi-nätverksscanningen
    Termux steg för steg (Del 2)

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 python2

Nu 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 nano

Det ä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)

Termux steg för steg (Del 2)

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 en lista med de flesta kommandon, 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 ett fantastiskt material om bash-skript.

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

Termux steg för steg (Del 2)

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:

  1. utföra API-begäran termux-battery-status
  2. spara den mottagna datan i filen test.txt
  3. visa datan från filen på skärmen
  4. köra det tidigare skrivna programmet hello-world.py
  5. spara data från programmet i filen test.txt
  6. visa datan från filen på skärmen
  7. kopiera data från filen till urklipp
  8. visa innehållet i urklipp på skärmen
  9. 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.sh

Nu 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 # пункт 9

Nu går vi till mappen bashscript och skriver ./test.sh vi observerar i terminalen på Android-enheten:

Termux steg för steg (Del 2)

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:

  1. Köra underprogrammet
  2. Överföra resultatet av understödsprogrammet till urklipp
  3. 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! Solon

Vi 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:

  1. Öppna filen source
  2. Räkna antalet rader i den öppna filen
  3. Stäng filen (det är onödigt att ha den öppen längre än nödvändigt)
  4. Vi genererar ett slumpmässigt heltal inom antalet rader i filen source
  5. Öppna filen source
  6. Vi skriver ut raden med det genererade numret
  7. 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 filen

Efter 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. Logga in, tack.

Vill du fortsätta "Termux steg för steg"?

  • Ja

  • Ingen

2 användare röstade. Ingen avstod.

Källa: habr.com

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster