Termux stap voor stap (Deel 2)

In vorige deel hebben we kennisgemaakt met de basiscommando's van Termux, hebben we een SSH-verbinding met de pc ingesteld, geleerd aliasen te maken, en een aantal nuttige tools geïnstalleerd. Dit keer staat ons meer te wachten, we gaan:

  • leren over Termux:API
  • Python en nano installeren, en 'Hello, world!' in Python schrijven
  • leren over bash-scripts en een script schrijven met gebruik van Termux:API
  • met behulp van bash-scripts, Termux:API en Python een eenvoudige applicatie schrijven

Aangezien we nu begrijpen wat de ingevoerde commando's doen, zal ik vanaf deze stap niet elk detail zo uitgebreid beschrijven, maar waar het moeilijkheden kan opleveren, zal ik het zeker toelichten.

Ik gebruik vaak aliasen, daarom zijn de afkortingen die in dit deel worden gebruikt hier weergegeven:

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

Het plan is klaar, laten we beginnen! En vergeet natuurlijk niet de 'magische Tab' (Zie Deel 1).

Stap 4

Duiken in de konijnenhol van Termux:API

API, wat een veelzeggend woord voor het hart van een programmeur

Als we het onderwerp Termux:API buiten beschouwing laten, hadden al onze stappen tot een eenvoudige samenvatting van een brochure als 'Linux voor Dummies' kunnen worden gereduceerd, zoals terecht opgemerkt in de reacties op het eerste deel.

Laten we beginnen met Termux:API te installeren vanuit de Google Play Store (vergeet niet Termux opnieuw op te starten daarna):

Termux stap voor stap (Deel 2)

Vervolgens moeten we het API-pakket in de Termux-console installeren:

updg # Vergeet de aliasen niet
apt install termux-api

Voor experimenten gebruik ik Android 5.1.1, voor eigenaren van Android 7 moet je Termux:API 'beveiligen' door naar 'Instellingen' > 'Beveiligde applicaties' te gaan, anders blijven API-aanroepen zoals termux-battery-status, hangen. (Zie project wiki)

Nu is het tijd om ons beter bekend te maken met de verworven mogelijkheden. De meest recente en gedetailleerde beschrijving van Termux:API is te vinden op project wiki. Ik zal proberen het meest overzichtelijke en interessante te kiezen, zodat je een goed begrip krijgt voor zelfstandig werken in de toekomst.

Enkele voorbeelden van Termux:API

  • termux-battery-status
    Geeft de batterijstatus terug
    Termux stap voor stap (Deel 2)
  • termux-brightness
    Stelt de schermhelderheid in van 0 tot 255
    Termux stap voor stap (Deel 2)
  • termux-toast
    Toont een tijdelijke pop-upnotificatie
    Termux stap voor stap (Deel 2)
  • termux-torch
    Zet de zaklamp aan
    Termux stap voor stap (Deel 2)
  • termux-wifi-scaninfo
    Geeft informatie over de laatste netwerkscan van Wi-Fi terug
    Termux stap voor stap (Deel 2)

Het is niet moeilijk op te merken dat de teruggegeven waarden strings, dictionaries, lijsten van dictionaries zijn, in feite datatypes waar Python uitstekend mee overweg kan, daarom gaan we het nu installeren.

Stap 5

Laten we Python en nano installeren

Om Python te installeren, typen we in de terminal:

updg
apt install python
apt install python2

Nu hebben we zowel Python 2 als 3 geïnstalleerd.

Tijdens het schrijven van dit artikel heb ik een andere teksteditor ontdekt, nano, die me beter bevalt dan vim. Laten we deze installeren:

apt install nano

Het is eenvoudiger in gebruik dan vim en nano heeft een vriendelijker interface. Op Android-apparaten is vim echter handiger.

HelloWorld in Python in Termux

In principe zou deze stap niet nodig zijn, maar Python in Termux installeren en geen HelloWorld schrijven, zou ik ongepast vinden.

Ik ben niet van plan om iemand Python te leren, dus degenen die het niet weten, kunnen gewoon de code kopiëren (of zelf beginnen te leren, gelukkig is er genoeg literatuur), terwijl degenen die het weten, zelf iets kunnen proberen. En terwijl ik bezig ben, laat ik ook een manier zien om tekst in de terminal in te voeren zonder een editor.

cat >hello-world.py     
# Als je geen bron opgeeft (ik herinner eraan cat 1.txt > 2.txt)
# dan haalt cat de gegevens uit de standaardinvoer,
# in eenvoudige woorden, wat je vanaf het toetsenbord invoert.

str = 'Hello, world!' # we geven de variabele str de waarde "Hello, world!"
print (str) # we geven de waarde van de variabele str weer

# Ctrl + D om de invoer te beëindigen en het bestand op te slaan (hello-world.py)

py hello-world.py # we starten het bestand (py is een alias voor python)

Termux stap voor stap (Deel 2)

Als je tijdens de invoer een fout hebt gemaakt en al op Enter hebt gedrukt, kun je niet naar de vorige regel teruggaan, daarvoor moet je de invoer beëindigen met Ctrl + D (je kunt ook helemaal stoppen met Ctrl + Z) en alles opnieuw doen. Aangezien we '>' hebben gebruikt, wordt het bestand volledig overschreven. Daarom raad ik deze invoermethode niet aan als je niet zeker weet dat je de code meteen zonder fouten schrijft.

Stap 6

Bash-scripts

Bash-scripts zijn een geweldige manier om het werk met de terminal te automatiseren. Een script is een bestand met de extensie .sh (de extensie is niet verplicht) dat een reeks terminalopdrachten bevat, waarvan een deel al is bestudeerd. Hier is een lijst van de meeste commando's, het zou allemaal moeten werken, maar let op dat dit een lijst is voor 'volwassen' Linux en niet voor Termux, en hier is gewoon prachtig materiaal over bash-scripts.

Met scripts kunnen vrijwel alle monotone taken geautomatiseerd worden. Laten we een eenvoudige bash-script schrijven die de waarde van een door zichzelf aangemaakte variabele uitvoert. Ik zal weer gebruik maken van cat, maar jullie kunnen een normale teksteditor gebruiken, en voor degenen die het op prijs stellen, kunnen zich oefenen met echo.

cat >test.sh

export str="Hallo, Habr!"
# export creëert de variabele str
# en wijst deze de waarde "Hallo, Habr!" toe
# Plaats geen spaties voor of na ‘=’

echo $str # Om naar variabelen te verwijzen, plaats je ‘$’ ervoor

# Ctrl + D

# .\/test.sh om het script uit te voeren, maar als je dat nu doet, zal er een fout optreden
# om deze fout te verhelpen, moet je het bestand test.sh uitvoerbaar maken

chmod +x test.sh
# chmod verandert de toegangsrechten (+ toevoegen / - verwijderen)
# ‘+x’ betekent dat we het bestand uitvoerbaar maken

.\/test.sh # We starten de uitvoering van ons script

Termux stap voor stap (Deel 2)

Bash-script met Termux:API

Laten we iets schrijven dat verschilt van de beruchte HelloWorld's, maar net zo nutteloos is. Ons script zal:

  1. een API-verzoek termux-battery-status uitvoeren
  2. de verkregen gegevens opslaan in het bestand test.txt
  3. de gegevens uit het bestand op het scherm weergeven
  4. het eerder geschreven programma hello-world.py uitvoeren
  5. de door het programma verkregen gegevens in het bestand test.txt opslaan
  6. de gegevens uit het bestand op het scherm weergeven
  7. de gegevens uit het bestand naar het klembord verplaatsen
  8. de inhoud van het klembord op het scherm weergeven
  9. een pop-upbericht weergeven met de gegevens uit het klembord

Laten we eerst een map maken voor ons werk en daar hello-world.py als test.py kopiëren. We creëren in deze map de bestanden test.sh en test.txt:

mkdir bashscript

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

cd bashscript/

touch test.sh test.txt # touch creëert bestanden

chmod +x test.sh

Laten we nu op een voor ons handige manier het script in het bestand test.sh schrijven:

#!/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, terwijl we in de map bashscript zijn, typen we ./test.sh we observeren in de terminal op ons Android-apparaat:

Termux stap voor stap (Deel 2)

Kijk, we hebben het geplande bash-script geschreven. We kunnen de uitvoer van informatie over de uitvoering van elke actie (met behulp van echo) mengen. Dit laat ik over aan de lezers.

Stap 7

Laten we iets nuttigs doen

Relatief nuttig

Laten we de technische specificatie formuleren
De applicatie moet na het starten een willekeurige regel uit een bestand naar het klembord plaatsen en hiervan op de hoogte stellen met een pop-upmelding.

We nemen als basis een bash-script, de willekeurige regel uit het bestand halen we met behulp van een subprogramma in Python. Laten we een werkplan voor het script opstellen:

  1. Het subprogramma starten
  2. Kopieer het resultaat van de subroutine naar het klembord
  3. Geef een pop-upmelding weer

Laten we de namen van de app-directory en bestanden bepalen:

  • de rndstr-map in de thuismap
    • source — het bestand waaruit we de regels zullen nemen
    • rndstr.py — de subroutine die een willekeurige regel uit het source-bestand naar de console afdrukt
    • rndstr.sh — het scriptbestand

We maken de applicatiemap aan en gaan daarheen om de bestanden te creëren.

De eerste twee punten van het scriptplan kunnen met een pijplijn worden samengevoegd, uiteindelijk, met behulp van Termux:API krijgen we:

#!/bin/bash

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

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

In het source-bestand kun je elke tekst plaatsen die logisch is verdeeld in regels; ik heb ervoor gekozen om citaten te plaatsen:

Lijst van het source-bestand

Oprechtheid is geen waarheid. L. Lavelle
Verdraag en onthoud je. Epictetus
Alleen dat is nobel, wat onbaatzuchtig is. J. La Bruyère
Wees verstandig moedig. B. Gracian
Goedheid is beter dan schoonheid. G. Heine
Voor grote daden is onvermoeibare volharding nodig. F. Voltaire
Als je wilt dat men je altijd tevreden stelt, dien jezelf dan. B. Franklin
Overmatige bescheidenheid is niets anders dan verborgen trots. A. Chenier
Heel verstandige mensen worden wantrouwend als ze hun verwarring zien. F. Nietzsche
Armoede wijst op een gebrek aan middelen, niet op een gebrek aan adel. D. Boccaccio
We moeten oppassen dat bescheidenheid niet tot vernedering leidt. A. Bakihanov
Wie veel opoffert, kan zich veel позволen. J. Chardon
Wanneer we betaald worden voor een nobele daad, wordt deze van ons afgepakt. N. Chamfort
Het is niet eng om helemaal niets te krijgen, maar het is vervelend om te verliezen wat je hebt gekregen. Claudius Aelianus
Het is gemakkelijker om geduldig te verdragen wat we niet kunnen veranderen. Horatius
Je raakt moe van het wachten, maar hoe veel erger zou het zijn als er niets te wachten was. B. Shaw
Alles komt op tijd, als mensen kunnen wachten. F. Rabelais
Met ons geduld kunnen we meer bereiken dan met onze kracht. E. Burke
We moeten in staat zijn om te verdragen wat we niet kunnen vermijden. M. Montaigne
Wie moedig is in zaken, zal niet bang zijn voor woorden. Sofocles
Ik hou niet van vechten, ik hou van winnen. B. Shaw
Een slachtoffer dat tegen de muur gedrukt wordt, verandert in een tijger. M. Cervantes
Een waardig persoon volgt niet de sporen van anderen. Confucius
Een groot verstand zal zijn kracht niet alleen tonen in het vermogen om te denken, maar ook in het vermogen om te leven. R. Emerson
Eer is een onvoordelige goederen. Het kost veel, maar blijft slecht behouden. O. Balzac
Beheersing en gepastheid in conversaties zijn meer waard dan welsprekendheid. F. Bacon
Wie niet kan zwijgen, kan niet spreken. Seneca de Jongere
Goede manieren bestaan uit kleine opofferingen. F. Chesterfield
Een goed mens is niet degene die goed kan doen, maar degene die niet kwaad kan doen. V. Kljutschevsky
Doe geen onherroepelijke uitspraken! Augustinus
Niets is te veel! Solon

We moeten een subprogramma maken dat een willekeurige regel uit het bestand source extraheren.
Laten we het algoritme van het subprogramma beschrijven:

  1. Open het bestand source
  2. Tel het aantal regels in het geopende bestand
  3. Sluit het bestand (er is geen reden om het onnodig geopend te houden)
  4. We genereren een willekeurig geheel getal binnen het aantal regels van het bestand source
  5. Open het bestand source
  6. We geven de regel weer met het nummer van het gegenereerde getal
  7. We sluiten het bestand

We implementeren het algoritme in Python (ik schrijf voor Python 3.7):

import random  #  importeren voor willekeurige getallen
import os  #  voor het verkrijgen van het pad

path = os.path.abspath(__file__)  #  krijgen we het directe pad naar het bestand rndstr.py
path = os.path.dirname(path)  #  omzetten naar het pad van de directory
path = path  + '\/source'  #  omzetten naar het pad naar het bestand source

f = open(path)  #  openen we het bestand
i = 0  #  de teller op nul zetten
for str in f: i+=1  #  tellen we de regels van het bestand
f.close  #  sluiten we het bestand

j = int(round(i * random.random()))  #  genereren we een willekeurig geheel getal van 0 tot i

f = open(path)  #  openen we het bestand
i = 0  #  de teller op nul zetten
for str in f:  #  doorlopen we de regels in het bestand
    if i == j:  #  als de regelnummer gelijk is aan het gegenereerde getal
        print (str, end='')  #  printen we de regel zonder naar een nieuwe regel over te gaan
        break  #  verlaten we de loop
    i+=1  #  verhogen we de teller met 1
f.close  #  sluiten we het bestand

Nadat de bestanden zijn gemaakt en geschreven, moeten we uitvoeringsrechten aan het bestand geven rndstr.sh, en een alias maken voor snelle uitvoering.

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

Nu, door in de terminal in te voeren rnst krijgen we een willekeurige aforisme in het klembord, die we bijvoorbeeld kunnen gebruiken in de correspondentie.

We hebben tenminste iets nuttigs geschreven. Relatief nuttig.

P.s.

Ik heb opzettelijk in de laatste stap geen screenshots gegeven en heb bepaalde acties niet gedetailleerd toegelicht, slechts de inhoud van de bestanden beschreven, zodat lezers zelf aan de slag kunnen.

Hiermee denk ik dat 'Termux stap voor stap' een einde heeft. Natuurlijk zijn dit slechts de eerste stappen, maar nu kunnen jullie zelf verder gaan.

Oorspronkelijk was het mijn bedoeling om in deze cyclus te laten zien hoe je nmap en sqlmap gebruikt, maar er zijn al veel artikelen over dit onderwerp zonder mij. Als je wilt dat ik de cyclus 'Termux stap voor stap' voortzet, dan is er hieronder een enquête en kun je in de reacties voorstellen waarover ik nog kan schrijven.

Alleen geregistreerde gebruikers kunnen deelnemen aan de enquête. Log in, alstublieft.

Doorgaan met 'Termux stap voor stap'?

  • Yes

  • No

2 gebruikers hebben gestemd. Geen onthoudingen.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster