In wir haben uns mit den grundlegenden Termux-Befehlen vertraut gemacht, eine SSH-Verbindung mit dem PC eingerichtet, gelernt, wie man Aliase erstellt und einige nützliche Tools installiert. Dieses Mal werden wir noch einen Schritt weiter gehen und gemeinsam:
- erfahren wir mehr über Termux:API
- installieren wir Python und nano und schreiben wir "Hello, world!" in Python
- erfahren wir etwas über Bash-Skripte und schreiben ein Skript unter Verwendung von Termux:API
- schreiben wir mit Bash-Skript, Termux:API und Python ein einfaches Programm
Da wir nun verstehen, was die eingegebenen Befehle tun, werde ich in den nächsten Schritten nicht mehr jede Handlung so detailliert erläutern, aber wo es Schwierigkeiten geben könnte, werde ich auf jeden Fall Erläuterungen geben.
Ich benutze oft Aliase, daher sind die hier verwendeten Abkürzungen aufgeführt:
alias updg='apt update && apt upgrade'
alias py='python'Der Plan steht, wir können loslegen! Und natürlich nicht den "magischen Tab" vergessen ().
Schritt 4
Tauchen wir ein in das Kaninchenloch von Termux:API
API, wie viel steckt in diesem Wort für das Herz eines Programmierers.
Wenn wir das Thema Termux:API ausklammern, könnte man all unsere Schritte auf eine einfache Zusammenfassung einer Broschüre wie "Linux für Einsteiger" reduzieren, wie in den Kommentaren zum ersten Teil treffend bemerkt wurde.
Zuerst installieren wir Termux:API aus dem Google Play Store (es schadet nicht, Termux anschließend neu zu starten):

Als Nächstes müssen wir das API-Paket in der Termux-Konsole installieren:
updg # Vergessen Sie nicht die Aliase
apt install termux-apiFür Experimente benutze ich Android 5.1.1. Besitzer von Android 7 müssen Termux: API 'schützen', indem sie zu 'Einstellungen' > 'Sichere Apps' gehen. Andernfalls hängen API-Aufrufe wie termux-battery-status, möglicherweise. (Siehe )
Jetzt sollten wir uns näher mit den neu erlangten Möglichkeiten vertrautmachen. Die aktuellste und detaillierteste Beschreibung von Termux:API finden Sie auf . Ich werde versuchen, die anschaulichsten und interessantesten Beispiele auszuwählen, damit Sie sich auf eigene Faust weiterentwickeln können.
Einige Beispiele für Termux:API
- termux-battery-status
Gibt den Batteriestatus zurück

- termux-brightness
Stellt die Bildschirmhelligkeit von 0 bis 255 ein

- termux-toast
Zeigt eine temporäre Popup-Benachrichtigung an

- termux-torch
Aktiviert die Taschenlampe

- termux-wifi-scaninfo
Gibt Informationen zum letzten WLAN-Scan zurück

Es ist leicht zu erkennen, dass die zurückgegebenen Werte Strings, Dictionaries und Listen von Dictionaries sind, also Datentypen, mit denen Python hervorragend arbeitet, weshalb wir als Nächstes Python installieren werden.
Schritt 5
Wir installieren Python und nano
Um Python zu installieren, geben Sie im Terminal Folgendes ein:
updg
apt install python
apt install python2Jetzt haben wir Python 2 und 3 installiert.
Während meiner Arbeit an diesem Artikel habe ich einen weiteren Texteditor namens nano entdeckt, der mir besser gefällt als vim; lassen Sie uns ihn installieren:
apt install nanoDie Verwendung ist einfacher als bei vim, und nano hat eine benutzerfreundlichere Oberfläche. Auf Android-Geräten ist vim jedoch bequemer.
HelloWorld in Python auf Termux
Im Grunde genommen könnte man diesen Punkt auslassen, aber Python in Termux zu installieren und kein HelloWorld-Skript zu schreiben, wäre in meinen Augen unangebracht.
Ich habe nicht vor, jemandem Python beizubringen, also können Unwissende einfach den Code kopieren (oder selbstständig mit dem Lernen beginnen, es gibt genügend Literatur), während Wissende auch selbst etwas erstellen können. Und ich werde „nebenbei“ noch zeigen, wie man Text im Terminal ohne Editor eingibt.
cat >hello-world.py
# Wenn keine Quelle angegeben wird (denk daran, cat 1.txt > 2.txt)
# wird cat Daten aus dem Standard-Eingabestrom nehmen,
# einfacher gesagt, von der Tastatur eingegeben.
str = 'Hallo, Welt!' # Wir weisen der Variablen str den Wert "Hallo, Welt!" zu
print (str) # Wir geben den Wert aus der Variablen str auf dem Bildschirm aus
# Ctrl + D beendet die Eingabe und speichert die Datei (hello-world.py)
py hello-world.py # Wir führen die Datei aus (py ist ein Alias für python)
Wenn Sie während der Eingabe einen Fehler nicht bemerkt haben und bereits die Eingabetaste gedrückt haben, können Sie nicht zur vorherigen Zeile zurückkehren. Beenden Sie die Eingabe mit Ctrl + D (Sie können auch einfach abbrechen mit Ctrl + Z) und wiederholen Sie alles von Anfang an. Da wir '>' verwendet haben, wird die Datei vollständig überschrieben. Aus diesem Grund empfehle ich nicht, diese Eingabemethode zu verwenden, wenn Sie sich nicht sicher sind, dass Sie den Code sofort ohne Fehler schreiben.
Schritt 6
Bash-Skripte
Bash-Skripte sind eine hervorragende Möglichkeit, die Arbeit im Terminal zu automatisieren. Ein Skript ist eine Datei mit der Endung .sh (die Endung ist nicht unbedingt erforderlich), die eine Reihe von Terminalbefehlen enthält, von denen einige bereits erlernt wurden. Hier ist , alles sollte funktionieren, aber beachten Sie, dass dies eine Liste für „erwachsenen“ Linux ist, nicht für Termux, und einfach .
Mit Skripten kann man nahezu alle monotonen Aufgaben automatisieren. Lassen Sie uns ein einfaches Bash-Skript schreiben, das einen Wert aus einer von ihm selbst erstellten Variablen ausgibt. Ich werde wieder cat verwenden, Sie können jedoch einen normalen Texteditor nutzen, und wer sich besonders herausfordern möchte, kann echo verwenden.
cat >test.sh
export str="Hallo, Habr!"
# export erstellt die Variable str
# und weist ihr den Wert "Hallo, Habr!" zu
# Setzen Sie keine Leerzeichen vor und nach dem ‚=‘
echo $str # Um auf Variablen zuzugreifen, setzen Sie ‚$‘ davor
# Ctrl + D
# ./test.sh zur Ausführung des Skripts, aber wenn Sie dies jetzt tun, wird ein Fehler angezeigt
# Um den Fehler zu beheben, muss die Datei test.sh ausführbar gemacht werden
chmod +x test.sh
# chmod ändert die Zugriffsrechte (+ hinzufügen / - entfernen)
# ‚+x‘ bedeutet, dass wir die Datei ausführbar machen
./test.sh # Starten Sie die Ausführung unseres Skripts
Bash-Skript mit Termux:API
Lassen Sie uns schon etwas schreiben, das sich von den berüchtigten HelloWorlds unterscheidet, aber ebenso nutzlos ist. Unser Skript wird sein:
- Führen Sie die API-Anfrage termux-battery-status aus
- Speichern Sie die erhaltenen Daten in der Datei test.txt
- Geben Sie die Daten aus der Datei auf dem Bildschirm aus
- Führen Sie das zuvor geschriebene Programm hello-world.py aus
- Schreiben Sie die von dem Programm erhaltenen Daten in die Datei test.txt
- Geben Sie die Daten aus der Datei auf dem Bildschirm aus
- Kopieren Sie die Daten aus der Datei in die Zwischenablage
- Geben Sie den Inhalt der Zwischenablage auf dem Bildschirm aus
- Zeigen Sie eine Popup-Nachricht mit den Daten aus der Zwischenablage an
Zuerst erstellen wir einen Arbeitsordner und kopieren hello-world.py als test.py dorthin, wir erstellen in diesem Ordner die Dateien test.sh und test.txt:
mkdir bashscript
cat hello-world.py >> bashscript/test.py
cd bashscript/
touch test.sh test.txt # touch erstellt Dateien
chmod +x test.shJetzt schreiben wir das Skript in die Datei test.sh auf beliebige Weise:
#!/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 # пункт 9Jetzt befinden wir uns im Ordner bashscript, wir schreiben ./test.sh beobachten Sie das Terminal auf dem Android-Gerät:

So, wir haben das geplante bash-Skript geschrieben. Man kann dessen Ausgabe mit Informationen zum Fortschritt jeder Aktion in der Konsole (mithilfe von echo) ergänzen; das überlasse ich den Lesern.
Schritt 7
Lass uns etwas Nützliches tun
Relativ nützlich
Formulieren wir das technische Briefing
Die Anwendung soll nach dem Start eine zufällige Zeile aus der Datei in die Zwischenablage kopieren und darüber mit einer Popup-Nachricht informieren.
Wir verwenden ein Bash-Skript, um eine zufällige Zeile aus einer Datei mithilfe eines Python-Programms abzurufen. Lassen Sie uns den Arbeitsplan des Skripts aufstellen:
- Unterprogramm starten
- Ergebnis des Unterprogramms in die Zwischenablage übertragen
- Eine Benachrichtigung anzeigen
Lassen Sie uns über die Namen des Verzeichnisses und der Anwendungsdateien entscheiden:
- Ordner rndstr im Home-Verzeichnis
- source – Datei, aus der wir Zeilen abrufen werden
- rndstr.py – Unterprogramm, das eine zufällige Zeile aus der Datei source in der Konsole ausgibt
- rndstr.sh – Skriptdatei
Wir erstellen das Verzeichnis der Anwendung und erstellen dort die Dateien.
Die ersten beiden Punkte des Skriptplans können in einer Pipeline zusammengeführt werden. Schließlich erhalten wir unter Verwendung von Termux:API:
#!/bin/bash
python ~/rndstr/rndstr.py | termux-clipboard-set # 1 и 2 пункты плана работы
termux-toast "OK" # 3 пункт. Выводим всплывающее сообщение "ОК"In die Datei source können Sie jeden Text einfügen, der logisch in Zeilen unterteilt ist. Ich habe mich entschieden, Aphorismen einzufügen:
Listing der Datei source
Ehrlichkeit ist nicht das gleiche wie Wahrheit. L. Lavelle
Hab Geduld und beherrsche dich. Epiktet
Ehrenswert ist nur das, was selbstlos getan wird. J. Labruyère
Sei mutig, aber vernünftig. B. Gracián
Güte ist mehr wert als Schönheit. G. Heine
Für große Taten ist unermüdliche Hartnäckigkeit nötig. F. Voltaire
Wenn du willst, dass dir alle gehorchen, dienst du dir selbst. B. Franklin
Übermäßige Bescheidenheit ist nichts anderes als versteckter Stolz. A. Chenier
Sehr kluge Menschen beginnen misstrauisch zu werden, wenn man ihr Unbehagen sieht. F. Nietzsche
Armut ist ein Zeichen von fehlenden Mitteln, nicht von fehlendem Adel. D. Boccaccio
Man muss darauf achten, Bescheidenheit nicht bis zur Erniedrigung zu treiben. A. Bakihanov
Wer auf vieles verzichtet, kann sich vieles erlauben. J. Chardon
Wenn man für eine edle Tat bezahlt wird, wird sie einem genommen. N. Chamfort
Nichts zu bekommen ist nicht schlimm, aber das Verlorene zu verlieren, ist ärgerlich. Claudius Aelianus
Es ist leichter, geduldig das zu ertragen, was man nicht ändern kann. Horaz
Man wird müde zu warten, aber wie viel schlimmer wäre es, wenn es nichts mehr zu erwarten gäbe. B. Shaw
Alles kommt rechtzeitig, wenn die Menschen warten können. F. Rabelais
Mit Geduld können wir mehr erreichen als mit Kraft. E. Burke
Man muss in der Lage sein, das zu ertragen, was man nicht vermeiden kann. M. Montaigne
Wer im Geschäft mutig ist, fürchtet sich nicht vor Worten. Sophokles
Ich liebe es nicht zu kämpfen, ich liebe es zu gewinnen. B. Shaw
Ein gehetzter und an die Wand gedrängter Kater wird zum Tiger. M. Cervantes
Ein würdiger Mensch folgt nicht den Spuren anderer. Konfuzius
Ein großer Geist zeigt seine Kraft nicht nur durch das Denken, sondern auch durch das Leben. R. Emerson
Ruhm ist eine unvorteilhafte Ware. Teuer im Preis, schwer zu erhalten. O. Balzac
Maßvoll und passend in Gesprächen ist mehr wert als Beredsamkeit. F. Bacon
Wer nicht schweigen kann, der kann auch nicht sprechen. Seneca der Jüngere
Gute Manieren bestehen aus kleinen Opfern. F. Chesterfield
Ein guter Mensch ist nicht der, der Gutes tun kann, sondern der, der kein Übel tun kann. V. Kluchevsky
Fällt keine endgültigen Urteile! Augustinus
Nichts übertrieben! SolonWir müssen ein Unterprogramm erstellen, das eine zufällige Zeile aus der Datei source extrahiert.
Lassen Sie uns den Algorithmus des Unterprogramms beschreiben:
- Öffnen Sie die Datei source
- Zählen Sie die Anzahl der Zeilen in der geöffneten Datei
- Schließen Sie die Datei (es gibt keinen Grund, sie unnötig offen zu halten)
- Generieren Sie eine zufällige Ganzzahl im Bereich der Anzahl der Zeilen in der Datei source
- Öffnen Sie die Datei source
- Geben Sie die Zeile mit der generierten Nummer aus
- Schließen Sie die Datei
Implementieren Sie den Algorithmus in Python (ich schreibe für Python 3.7):
import random # zur Generierung von Zufallszahlen importieren
import os # für den Pfad
path = os.path.abspath(__file__) # erhalten den absoluten Pfad zur Datei rndstr.py
path = os.path.dirname(path) # machen den Pfad zum Verzeichnis
path = path + '/source' # machen den Pfad zur Datei source
f = open(path) # Datei öffnen
i = 0 # Zähler zurücksetzen
for str in f: i+=1 # zählen die Zeilen der Datei
f.close # Datei schließen
j = int(round(i * random.random())) # generieren eine ganze Zufallszahl von 0 bis i
f = open(path) # Datei öffnen
i = 0 # Zähler zurücksetzen
for str in f: # durch die Zeilen der Datei iterieren
if i == j: # wenn der Zeilenzähler der generierten Zahl entspricht
print (str, end='') # die Zeile ohne Zeilenumbruch ausgeben
break # Schleife verlassen
i+=1 # Zähler um 1 erhöhen
f.close # Datei schließenNachdem die Dateien erstellt und gespeichert wurden, müssen die Ausführungsrechte für die Datei festgelegt werden. rndstr.sh, und ein Alias für einen schnellen Zugriff erstellt werden.
alias rnst="~/rndstr/rndstr.sh"Jetzt, wenn wir im Terminal rnst eingeben, erhalten wir ein zufälliges Aphorismus in die Zwischenablage, das wir zum Beispiel in der Korrespondenz verwenden können.
So haben wir wenigstens etwas Nützliches geschrieben. Relativ nützlich.
P.s.
Ich habe absichtlich im letzten Schritt auf Screenshots verzichtet und einige Aktionen nur in den Dateien skizziert, damit die Leser die Möglichkeit haben, selbst zu arbeiten.
Mit diesem ‚Termux Schritt für Schritt‘ denke ich, dass wir zum Ende kommen. Natürlich sind das nur die ersten Schritte, aber jetzt können Sie selbst vorankommen.
Ursprünglich hatte ich geplant, in diesem Zyklus zu zeigen, wie man nmap und sqlmap verwendet, aber es gibt bereits viele Artikel zu diesem Thema. Wenn Sie möchten, dass ich den Zyklus ‚Termux Schritt für Schritt‘ fortsetze, gibt es unten eine Umfrage und Sie können in den Kommentaren vorschlagen, worüber ich noch schreiben soll.
Nur registrierte Benutzer können an der Umfrage teilnehmen. Sind Sie an Contour interessiert?
Soll ich ‚Termux Schritt für Schritt‘ fortsetzen?
Ja
Nein
2 Benutzer haben abgestimmt. Enthaltungen gab es keine.
Quelle: habr.com





