Termux steg for steg (Del 2)

I i forrige del ble vi kjent med de grunnleggende kommandoene i Termux, satt opp SSH-tilkobling med PC-en, lærte å lage alias og installerte noen nyttige verktøy. Denne gangen skal vi ta et steg videre, vi skal:

  • lære om Termux:API
  • installere Python og nano, og skrive «Hello, world!» i Python
  • lære om bash-skript, og skrive et skript ved hjelp av Termux:API
  • ved å bruke et bash-skript, Termux:API og Python skal vi skrive et enkelt program

Siden vi nå forstår hva de innlagte kommandoene gjør, vil jeg fra dette punktet ikke gå så detaljert gjennom hvert steg, men der hvor det kan oppstå problemer, vil jeg selvfølgelig gi forklaringer.

Jeg bruker ofte alias, så forkortelsene som brukes i denne delen vil bli vist her:

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

Planen er klar, vi kan begynne! Og husk selvfølgelig «den magiske Tab» (Se Del 1).

Trinn 4

Dykker inn i Termux:API

API, så mye i dette ordet smelter sammen for hjertet til en programmerer

Hvis vi ikke tar for oss emnet Termux:API, kunne vi ha oppsummert alle våre trinn til en enkel gjentakelse av en brosjyre som «Linux for dummies», som det ble påpekt i kommentarene til første del.

La oss først installere Termux:API fra Google Play Butikk (det kan være lurt å starte Termux på nytt etterpå):

Termux steg for steg (Del 2)

Deretter må vi installere API-pakken fra Termux-konsollen:

updg # Husk aliasene
apt install termux-api

For eksperimenter bruker jeg Android 5.1.1, for eiere av Android 7 må man «beskytte» Termux: API ved å gå til ‘Innstillinger’ > ‘Sikrede apper’, ellers vil API-kall, som termux-battery-status, henge seg. (Se prosjektwiki)

Nå er det på tide å bli bedre kjent med de tilegnede mulighetene. Den nyeste og mest detaljerte beskrivelsen av Termux:API kan finnes på prosjektwiki. Jeg vil forsøke å velge de mest illustrative og interessante, noe som vil hjelpe med å opparbeide seg erfaring for videre arbeid.

Noen eksempler på Termux:API

  • termux-battery-status
    Returnerer batteristatus
    Termux steg for steg (Del 2)
  • termux-brightness
    Setter skjermens lysstyrke fra 0 til 255
    Termux steg for steg (Del 2)
  • termux-toast
    Viser en midlertidig popup-melding
    Termux steg for steg (Del 2)
  • termux-torch
    Slår på lommelykten
    Termux steg for steg (Del 2)
  • termux-wifi-scaninfo
    Returnerer informasjon om den siste Wi-Fi-skanningen
    Termux steg for steg (Del 2)

Det er ikke vanskelig å legge merke til at de returnerte verdiene er strenger, ordbøker, lister av ordbøker, generelt datatyper som Python fungerer godt med, så neste steg er å installere det.

Trinn 5

La oss installere Python og nano

For å installere Python skriver vi i terminalen:

updg
apt install python
apt install python2

Nå har vi installert Python 2 og 3.

I løpet av arbeidet med artikkelen oppdaget jeg en annen tekstredigerer, nano, som jeg likte bedre enn vim, la oss installere den:

apt install nano

Det er enklere å bruke enn vim, og nano har et mer vennlig grensesnitt. På Android-enheter er vim likevel mer praktisk.

HelloWorld i Python i Termux

I utgangspunktet kunne vi ha klart oss uten dette punktet, men å installere Python i Termux og ikke skrive HelloWorld, er etter min mening en tabbe.

Jeg har ikke som mål å lære noen Python, så de som ikke kan det, kan bare kopiere koden (eller begynne å lære selv, det finnes mye litteratur), mens de som kan, kan lage noe selv. Og jeg vil 'underveis' vise en måte å skrive tekst i terminalen uten redigerer.

cat >hello-world.py     
# Hvis du ikke spesifiserer kilden (husker cat 1.txt > 2.txt)
# så vil cat ta data fra standard inndata,
# med andre ord, det som skrives inn fra tastaturet.

str = 'Hello, world!' # vi gir variabelen str verdien "Hello, world!"
print (str) # skriver ut verdien fra variabelen str

# Ctrl + D for å avslutte inndata og lagre filen (hello-world.py)

py hello-world.py # kjør filen (py er et alias for python)

Termux steg for steg (Del 2)

Hvis du ikke la merke til en feil mens du skrev, og allerede har trykket Enter, kan du ikke gå tilbake til linjen over. Du må avslutte innføringen ved å trykke Ctrl + D (du kan også bryte med Ctrl + Z) og gjenta alt fra starten. Siden vi brukte '>', vil filen bli overskrevet helt. Derfor anbefaler jeg ikke å bruke denne metoden for inndata, hvis du ikke er sikker på at du skriver koden riktig umiddelbart.

Trinn 6

Bash-skript

Bash-skript er en fantastisk måte å automatisere arbeidet med terminalen. Skriptet er en fil med filendelsen .sh (filendelsen er ikke obligatorisk) som inneholder en samling av terminalkommandoer, noen av dem har vi allerede lært. Her er listen over de fleste kommandoer, alt bør fungere, men vær oppmerksom på at dette er en liste for 'voksent' Linux, ikke for Termux, og her er en flott ressurs om bash-skript.

Ved hjelp av skript kan man automatisere nesten alle monotone handlinger. La oss skrive et enkelt bash-skript som viser verdien fra en variabel opprettet av skriptet selv. Jeg vil igjen bruke cat, men du kan bruke en vanlig tekstbehandler, og de som ønsker det kan trene seg på å bruke echo.

cat >test.sh

export str="Hei, Habr!"
# export oppretter variabelen str
# og tilordner den verdien "Hei, Habr!"
# Ikke sett mellomrom før og etter ‘=’

echo $str # For å referere til variabler setter man ‘$’ foran dem

# Ctrl + D

# .\/test.sh for å kjøre skriptet, men hvis vi gjør det nå vil det være en feil
# for å unngå feilen må filen test.sh gjøres kjørbar

chmod +x test.sh
# chmod endrer tilgangsrettigheter (+ legge til / - fjerne)
# ‘+x’ betyr at vi gjør filen kjørbar

.\/test.sh # Vi kjører skriptet vårt

Termux steg for steg (Del 2)

Bash-skript med Termux:API

La oss skrive noe annet enn de velkjente HelloWorld, men like bortkastet. Skriptet vårt vil:

  1. utføre API-anropet termux-battery-status
  2. lagre mottatte data i filen test.txt
  3. vise data fra filen på skjermen
  4. kjøre det tidligere skrevne programmet hello-world.py
  5. lagre dataene fra programmet til filen test.txt
  6. vise data fra filen på skjermen
  7. kopiere data fra filen til utklippstavlen
  8. vise innholdet i utklippstavlen på skjermen
  9. vise en popup-melding med data fra utklippstavlen

Først lager vi en mappe for arbeid og kopierer hello-world.py dit som test.py, og oppretter filene test.sh og test.txt i denne mappen:

mkdir bashscript

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

cd bashscript/

touch test.sh test.txt # touch lager filer

chmod +x test.sh

Nå skriver vi skriptet inn i filen test.sh på en praktisk måte:

#!/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å, mens vi er i mappen bashscript, skriver vi ./test.sh og observerer i terminalen på Android-enheten:

Termux steg for steg (Del 2)

Her har vi skrevet det planlagte bash-skriptet. Vi kan krydre det med å vise informasjon om utførelsen av hver handling (ved hjelp av echo), noe jeg lar stå til leserne.

Trinn 7

La oss gjøre noe nyttig

Relativt nyttig

La oss formulere en spesifikasjon
Programmet skal etter oppstart kopiere en tilfeldig streng fra filen til utklippstavlen og varsle om dette med en popup-melding.

Vi tar utgangspunkt i et bash-skript, og vi vil hente en tilfeldig streng fra filen ved å bruke en Python-undermodul. La oss lage en arbeidsplan for skriptet:

  1. Kjøre undermodulen
  2. Overføre resultatet av underprogrammet til utklippstavlen
  3. Vise en popup-melding

La oss bli enige om navna på katalogen og filene til appen:

  • mappen rndstr i hjemmebiblioteket
    • source — filen vi skal ta linjene fra
    • rndstr.py — underprogrammet som skriver ut en tilfeldige linje fra filen source til konsollen
    • rndstr.sh — skriptfilen

Vi oppretter katalogen for applikasjonen, og flytter oss inn i den for å opprette filene der.

De to første punktene i skriptplanen kan slås sammen til en pipeline, og ved å bruke 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 plassere hvilken som helst tekst logisk delt opp i linjer; jeg har valgt å plassere aforismer:

Listing av filen source

Oppriktighet er ikke sannhet. L. Lavelle
Lid og hold deg tilbake. Epiktet
Bare det som er uselvisk, er edelt. J. La Bruyère
Vær klok og modig. B. Gracián
Godhet er bedre enn skjønnhet. G. Heine
For store handlinger er utrettelig utholdenhet nødvendig. F. Voltaire
Hvis du vil at andre alltid skal tilfredsstille deg, tjen deg selv. B. Franklin
Overdreven beskjedenhet er ikke annet enn skjult stolthet. A. Chénier
Veldig kloke mennesker begynner å miste tillit hvis de viser forlegenhet. F. Nietzsche
Fattigdom viser mangel på midler, ikke mangel på edelhet. D. Boccaccio
Man må passe på å ikke la beskjedenhet gå over i ydmykelse. A. Bakihanov
Den som gir avkall på mye, kan unne seg mye. J. Chardon
Når vi blir betalt for en edel handling, mister vi den. N. Chamfort
Det er ikke skummelt å ikke få noe, men å miste det man har fått er trist. Klaudius Elysian
Det er lettere å tålmodig bære det vi ikke kan endre. Horatius
Man blir trøtt av å vente, men hvor mye verre ville det vært om det ikke var noe å vente på. B. Shaw
Alt kommer i tide, hvis folk vet å vente. F. Rabelais
Med vår tålmodighet kan vi oppnå mer enn med styrke. E. Burke
Vi må være i stand til å bære det vi ikke kan unngå. M. Montaigne
Den som er modig i handling, vil ikke skremmes av ord. Sofokles
Jeg liker ikke å kjempe, jeg liker å vinne. B. Shaw
Et forfulgt og presset katt blir til en tiger. M. Cervantes
En verdig person går ikke i andres fotspor. Konfucius
Et stort sinn vil vise sin styrke ikke bare i evnen til å tenke, men også i evnen til å leve. R. Emerson
Berømmelse er en ulønnsom vare. Den koster mye, men blir dårlig bevart. O. Balzac
Sanktion og passende i samtaler er mer verdifulle enn veltalenhet. F. Bacon
Den som ikke kan tie, kan heller ikke tale. Seneca Den Yngre
Gode manerer består av små oppofrelser. F. Chesterfield
En god mann er ikke den som kan gjøre godt, men den som ikke kan gjøre ondt. V. Kljuchevsky
Ikke kom med uomtvistelige dommer! Augustin
Ingenting for mye! Solon

Vi må lage et program som trekker en tilfeldig linje fra filen source.
La oss skissere algoritmen for programmet:

  1. Åpne filen source
  2. Tell antall linjer i den åpne filen
  3. Lukk filen (det er unødvendig å holde den åpen lenger)
  4. Vi genererer et tilfeldig heltall innenfor antallet rader i kildefilen
  5. Åpne filen source
  6. Vi skriver ut raden med nummeret til det genererte tallet
  7. Vi lukker filen

Vi implementerer algoritmen i Python (jeg skriver for Python 3.7):

import random  # importerer for å generere tilfeldige tall
import os  # for å få stien

path = os.path.abspath(__file__)  # får den direkte stien til filen rndstr.py
path = os.path.dirname(path)  # konverterer til stien til katalogen
path = path  + '‍/source'  # konverterer til stien til kildefilen

f = open(path)  # åpner filen
i = 0  # nullstiller telleren
for str in f: i+=1  # teller radene i filen
f.close  # lukker filen

j = int(round(i * random.random()))  # genererer et tilfeldig heltall fra 0 til i

f = open(path)  # åpner filen
i = 0  # nullstiller telleren
for str in f:  # itererer gjennom radene i filen
    if i == j:  # hvis rekkeviddetelleren er lik det genererte tallet
        print (str, end='')  # skriver ut raden uten ny linje
        break  # forlater løkken
    i+=1  # øker telleren med 1
f.close  # lukker filen

Etter at filene er opprettet og skrevet, må du gi kjøretilgang til filen rndstr.sh, og opprette et alias for rask tilgang.

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

Nå, ved å skrive inn i terminalen rnst vil vi få et tilfeldig sitat i utklippstavlen, som for eksempel kan brukes i samtaler.

Vi har skrevet noe nyttig. Relativt nyttig.

P.s.

Jeg har bevisst unngått å inkludere skjermbilder i det siste trinnet og har ikke detaljert forklart noen av handlingene, bare beskrevet innholdet i filene, slik at leserne har muligheten til å eksperimentere selv.

Med dette 'Termux trinn for trinn' tror jeg vi kan avslutte. Dette er selvfølgelig bare de aller første skrittene, men nå kan du fortsette fremover på egenhånd.

Opprinnelig planla jeg å vise i denne syklusen hvordan man bruker nmap, sqlmap, men det finnes allerede mange artikler om dette uten meg. Hvis det er ønskelig at jeg fortsetter syklusen 'Termux trinn for trinn', er det en avstemning nedenfor, og i kommentarene kan du foreslå hva annet du vil at jeg skal skrive om.

Kun registrerte brukere kan delta i undersøkelsen. Logg inn, vær så snill.

Fortsette 'Termux trinn for trinn'?

  • Ja

  • Nei

2 brukere har stemt. Ingen avholdte seg.

Kilde: habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster