In In questa fase, abbiamo già conosciuto i comandi di base di Termux, configurato una connessione SSH con il PC, imparato a creare alias e installato alcune utility utili. Questa volta faremo un ulteriore passo avanti, e faremo insieme:
- scoprire Termux:API
- installare Python e nano, e scrivere "Hello, world!" in Python
- imparare i bash script e scrivere uno script che utilizzi Termux:API
- utilizzando bash script, Termux:API e Python, scriveremo un semplice programma
Poiché ora comprendiamo cosa fanno i comandi che digitiamo, da questo passo non descriverò ogni azione così dettagliatamente, ma spiegherò sicuramente dove potrebbero sorgere difficoltà.
Uso spesso gli alias, quindi le abbreviazioni utilizzate in questa parte sono riportate qui:
alias updg='apt update && apt upgrade'\nalias py='python'Il piano è pronto, possiamo cominciare! E naturalmente non dimenticate il "magico Tab" ().
Passo 4
Ci immergiamo nella tana del coniglio di Termux:API
API, quante cose può trasmettere questo termine al cuore di un programmatore
Se non tocchiamo l'argomento Termux:API, tutti i nostri passi potrebbero essere riassunti in una semplice rielaborazione di qualche brochure come "Linux per principianti", come giustamente osservato nei commenti alla prima parte.
Per prima cosa, installiamo Termux:API dal Google Play Store (dopo non guasta riavviare Termux):

Successivamente, dobbiamo installare il pacchetto API nella console di Termux:
updg # Non dimentichiamo gli alias
apt install termux-apiPer esperimenti, utilizzo Android 5.1.1; per i possessori di Android 7 è necessario "proteggere" Termux: API, andando in ‘Impostazioni’ > ‘Applicazioni protette’, altrimenti le chiamate API, come termux-battery-status, si bloccheranno. (Vedi )
Ora vale la pena familiarizzare meglio con le capacità acquisite. La descrizione più recente e dettagliata di Termux:API può essere trovata su . Cercherò di selezionare gli esempi più chiari e interessanti, che permetteranno di acquisire esperienza per lavorare autonomamente in futuro.
Alcuni esempi di Termux:API
- termux-battery-status
Restituisce lo stato della batteria

- termux-brightness
Imposta la luminosità dello schermo da 0 a 255

- termux-toast
Mostra una notifica temporanea

- termux-torch
Accende la torcia

- termux-wifi-scaninfo
Restituisce informazioni sull'ultima scansione delle reti Wi-Fi

Non è difficile notare che i valori restituiti sono stringhe, dizionari, liste di dizionari, in generale tipi di dati con cui Python lavora perfettamente, quindi il passo successivo sarà installarlo.
Passo 5
Installiamo Python e nano
Per installare Python, digitiamo nel terminale:
updg
apt install python
apt install python2Ora abbiamo installato Python 2 e 3.
Durante il lavoro su questo articolo, ho scoperto un altro editor di testo, nano, che mi piace più di vim; vediamo come installarlo:
apt install nanoÈ più facile da usare rispetto a vim e nano ha un'interfaccia più amichevole. Su un dispositivo Android, vim è comunque più comodo.
HelloWorld in Python su Termux
In fin dei conti, si poteva anche evitare questo punto, ma installare Python su Termux e non scrivere HelloWorld, a mio avviso, è inaccettabile.
Non ho l'obiettivo di insegnare a nessuno Python, quindi chi non lo sa può semplicemente copiare il codice (o iniziare a studiare da solo, dato che ci sono molte risorse), mentre chi lo conosce può inventare qualcos'altro. E intanto mostrerò un modo per inserire testo nel terminale senza editor.
cat >hello-world.py
# Se non si specifica la sorgente (ricordo cat 1.txt > 2.txt)
# cat prenderà i dati dal flusso di input standard,
# in altre parole dall'input tastiera.
str = ‘Hello, world!’ # assegniamo alla variabile str il valore "Hello, world!"
print (str) # stampiamo sullo schermo il valore dalla variabile str
# Ctrl + D per terminare l'input e scrivere il file (hello-world.py)
py hello-world.py # eseguiamo il file (py è un alias di python)
Se durante l'input non hai notato un errore e hai già premuto Invio, non puoi tornare alla riga sopra, per farlo devi terminare l'input premendo Ctrl + D (puoi anche interrompere con Ctrl + Z) e ripetere tutto dall'inizio. Poiché abbiamo usato ‘>’, il file sarà riscritto completamente. Per questo motivo non consiglio di usare questo metodo di input se non sei sicuro di poter scrivere il codice subito senza errori.
Passo 6
Script Bash
Gli script Bash sono un ottimo modo per automatizzare il lavoro con il terminale. Uno script è un file con estensione .sh (l'estensione non è obbligatoria) che contiene un insieme di comandi del terminale, parte dei quali abbiamo già studiato. Ecco , tutto dovrebbe funzionare, ma attenzione, questo è un elenco per Linux 'adulto', non per Termux, e qui c'è solo .
Con gli script, è possibile automatizzare praticamente tutte le azioni monotone. Scriviamo un semplice bash script che stampa il valore di una variabile creata da esso stesso, utilizzerò di nuovo cat, voi potreste usare un editor di testo normale, e chi vuole esercitarsi può usare echo.
cat >test.sh
export str="Ciao, Habr!"
# export crea la variabile str
# e le assegna il valore "Ciao, Habr!"
# Non mettere spazi prima e dopo ‘=’
echo $str # Per accedere alle variabili, anteporre ‘$’
# Ctrl + D
# ./test.sh per eseguire lo script, ma se lo fai ora, ci sarà un errore
# per eliminare l'errore, è necessario rendere il file test.sh eseguibile
chmod +x test.sh
# chmod cambia i permessi di accesso (+ aggiungere / - rimuovere)
# ‘+x’ significa che stiamo rendendo il file eseguibile
./test.sh # Avviamo l'esecuzione del nostro script
Bash script con Termux:API
Scriviamo già qualcosa di diverso dai famosi HelloWorld, ma altrettanto inutile. Il nostro script sarà:
- eseguire la richiesta API termux-battery-status
- salvare i dati ottenuti nel file test.txt
- visualizzare i dati dal file sullo schermo
- eseguire il programma scritto in precedenza hello-world.py
- scrivere i dati ricevuti dal programma nel file test.txt
- visualizzare i dati dal file sullo schermo
- trasferire i dati dal file negli appunti
- visualizzare sullo schermo il contenuto degli appunti
- visualizzare un messaggio popup con i dati dagli appunti
Innanzitutto, creiamo una cartella di lavoro e copiamo hello-world.py in test.py, quindi creiamo i file test.sh e test.txt in questa cartella:
mkdir bashscript
cat hello-world.py >> bashscript/test.py
cd bashscript/
touch test.sh test.txt # touch crea i file
chmod +x test.shOra scriviamo lo script nel file test.sh in qualsiasi modo comodo:
#!/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 # пункт 9Ora, mentre siamo nella cartella bashscript, scriviamo ./test.sh osserviamo nel terminale del dispositivo Android:

Ecco, abbiamo scritto lo script bash pianificato. Possiamo arricchirlo con informazioni sullo stato di ciascuna azione (utilizzando echo), lascio questo ai lettori.
Passaggio 7
Facciamo qualcosa di utile
Relativamente utile
Formuliamo un incarico tecnico
L'applicazione deve, al suo avvio, copiare una stringa casuale dal file negli appunti e avvisare con un messaggio popup.
Prendiamo come base uno script bash, estrarremo una stringa casuale da un file utilizzando un sottoprogramma in Python. Elaboriamo un piano per il lavoro dello script:
- Avviare il sottoprogramma
- Trasferire il risultato del sottoprogramma negli appunti
- Visualizzare un messaggio popup
Definiamo i nomi della directory e dei file dell'applicazione:
- cartella rndstr nella directory home
- source — il file da cui prenderemo le stringhe
- rndstr.py — sottoprogramma che restituisce in console una stringa casuale dal file source
- rndstr.sh — file dello script
Creiamo la directory dell'applicazione e, spostandoci in essa, creiamo i file.
I primi due punti del piano dello script possono essere uniti in una pipeline, alla fine, utilizzando Termux:API otteniamo:
#!/bin/bash
python ~/rndstr/rndstr.py | termux-clipboard-set # 1 и 2 пункты плана работы
termux-toast "OK" # 3 пункт. Выводим всплывающее сообщение "ОК"Nel file source puoi inserire qualsiasi testo logicamente suddiviso in righe; io ho deciso di inserire degli aforismi:
Elenco del file source
L'onestà non è verità. L. Laval
Sopporta e astieniti. Epitteto
È nobile solo ciò che è disinteressato. J. La Bruyère
Sii ragionevolmente audace. B. Gracián
La bontà è meglio della bellezza. H. Heine
Per grandi opere è necessaria una costanza instancabile. F. Voltaire
Se vuoi che gli altri ti compiaciano sempre, servi te stesso. B. Franklin
L'eccessiva modestia è nient'altro che orgoglio nascosto. A. Chénier
Le persone molto intelligenti cominciano a non essere fidate se si vede il loro imbarazzo. F. Nietzsche
La povertà indica l'assenza di mezzi, non l'assenza di nobiltà. D. Boccaccio
Bisogna stare attenti a non portare la modestia al punto di umiliazione. A. Bakhanov
Chi rinuncia a molto può permettersi molto. J. Chardon
Quando ci pagano per un atto nobile, ci viene tolto. N. Chamfort
Non ricevere nulla non è spaventoso, ma perdere ciò che si è ottenuto è frustrante. Claudio Eliano
È più facile sopportare pazientemente ciò che non possiamo correggere. Orazio
Ti stanchi di aspettare, ma quanto sarebbe peggio se non ci fosse nulla da aspettare. B. Shaw
Tutto arriva in tempo, se le persone sanno aspettare. F. Rabelais
Con la nostra pazienza possiamo raggiungere più di quanto con la forza. E. Burke
Bisogna saper sopportare ciò che non si può evitare. M. Montaigne
Chi è coraggioso negli affari, non teme le parole. Sofocle
Non mi piace combattere, mi piace vincere. B. Shaw
Un gatto cacciato e spinto contro il muro si trasforma in una tigre. M. Cervantes
Una persona degna non segue le tracce degli altri. Confucio
Un grande intelletto manifesterà la sua potenza non solo nella capacità di pensare, ma anche nella capacità di vivere. R. Emerson
La gloria è una merce svantaggiosa. È costosa e si conserva male. O. Balzac
Moderazione e adeguatezza nei discorsi valgono più dell'eloquenza. F. Bacon
Chi non sa tacere, non è capace neanche di parlare. Seneca il Giovane
Le buone maniere consistono in piccoli sacrifici. F. Chesterfield
La persona buona non è quella che sa fare del bene, ma quella che non sa fare del male. V. Kliuchevsky
Non pronunciare giudizi irrevocabili! Agostino
Niente in eccesso! SoloneDobbiamo creare una sottofunzione che estrae una riga casuale dal file source.
Descriviamo l'algoritmo di funzionamento della sottofunzione:
- Apriamo il file source
- Contiamo il numero di righe nel file aperto
- Chiudiamo il file (non ha senso tenerlo aperto inutilmente)
- Generiamo un numero intero casuale nell'intervallo del numero di righe del file source
- Apriamo il file source
- Stampiamo la riga corrispondente al numero generato
- Chiudiamo il file
Implementiamo l'algoritmo in Python (scrivo per Python 3.7):
import random # importiamo per generare numeri casuali
import os # per ottenere il percorso
path = os.path.abspath(__file__) # otteniamo il percorso diretto del file rndstr.py
path = os.path.dirname(path) # convertiamo in percorso della directory
path = path + '/source' # convertiamo in percorso del file source
f = open(path) # apriamo il file
i = 0 # azzeriamo il contatore
for str in f: i+=1 # contiamo le righe del file
f.close # chiudiamo il file
j = int(round(i * random.random())) # generiamo un numero intero casuale da 0 a i
f = open(path) # apriamo il file
i = 0 # azzeriamo il contatore
for str in f: # iteriamo sulle righe del file
if i == j: # se il contatore delle righe è uguale al numero generato
print (str, end='') # stampiamo la riga senza andare a capo
break # usciamo dal ciclo
i+=1 # aumentiamo il contatore di 1
f.close # chiudiamo il fileDopo che i file sono stati creati e scritti, è necessario dare i permessi di esecuzione al file rndstr.sh, e creare un alias per un avvio rapido.
alias rnst="~/rndstr/rndstr.sh"Ora, inserendo nel terminale rnst avremo negli appunti un aforisma casuale, che, ad esempio, può essere usato nella corrispondenza.
Ecco, abbiamo scritto qualcosa di utile. Relativamente utile.
P.s.
Ho evitato intentionalmente di includere screenshot nell'ultimo passaggio e non ho descritto dettagliatamente alcune azioni, menzionando solo il contenuto dei file, per dare ai lettori la possibilità di lavorare in autonomia.
Con questo "Termux passo dopo passo", penso sia ora di concludere. Certamente, questi sono solo i primi passi, ma ora potete andare avanti da soli.
Inizialmente avevo pianificato di mostrare in questo ciclo come utilizzare nmap, sqlmap, ma ci sono già molti articoli su questo argomento. Se desiderate che continui il ciclo "Termux passo dopo passo", trovate un sondaggio qui sotto e nei commenti potete suggerire su cosa scrivere ancora.
Solo gli utenti registrati possono partecipare al sondaggio. , per favore.
Continuare "Termux passo dopo passo"?
Sì
No
Hanno votato 2 utenti. Nessun astenuto.
Fonte: habr.com





