Termux passo dopo passo (Parte 2)

In parte precedente 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" (Vedi Parte 1).

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

Termux passo dopo passo (Parte 2)

Successivamente, dobbiamo installare il pacchetto API nella console di Termux:

updg # Non dimentichiamo gli alias
apt install termux-api

Per 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 wiki del progetto)

Ora vale la pena familiarizzare meglio con le capacità acquisite. La descrizione più recente e dettagliata di Termux:API può essere trovata su wiki del progetto. 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 passo dopo passo (Parte 2)
  • termux-brightness
    Imposta la luminosità dello schermo da 0 a 255
    Termux passo dopo passo (Parte 2)
  • termux-toast
    Mostra una notifica temporanea
    Termux passo dopo passo (Parte 2)
  • termux-torch
    Accende la torcia
    Termux passo dopo passo (Parte 2)
  • termux-wifi-scaninfo
    Restituisce informazioni sull'ultima scansione delle reti Wi-Fi
    Termux passo dopo passo (Parte 2)

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 python2

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

Termux passo dopo passo (Parte 2)

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 l'elenco della maggior parte dei comandi, tutto dovrebbe funzionare, ma attenzione, questo è un elenco per Linux 'adulto', non per Termux, e qui c'è solo un ottimo materiale sui bash script.

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

Termux passo dopo passo (Parte 2)

Bash script con Termux:API

Scriviamo già qualcosa di diverso dai famosi HelloWorld, ma altrettanto inutile. Il nostro script sarà:

  1. eseguire la richiesta API termux-battery-status
  2. salvare i dati ottenuti nel file test.txt
  3. visualizzare i dati dal file sullo schermo
  4. eseguire il programma scritto in precedenza hello-world.py
  5. scrivere i dati ricevuti dal programma nel file test.txt
  6. visualizzare i dati dal file sullo schermo
  7. trasferire i dati dal file negli appunti
  8. visualizzare sullo schermo il contenuto degli appunti
  9. 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.sh

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

Ora, mentre siamo nella cartella bashscript, scriviamo ./test.sh osserviamo nel terminale del dispositivo Android:

Termux passo dopo passo (Parte 2)

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:

  1. Avviare il sottoprogramma
  2. Trasferire il risultato del sottoprogramma negli appunti
  3. 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! Solone

Dobbiamo creare una sottofunzione che estrae una riga casuale dal file source.
Descriviamo l'algoritmo di funzionamento della sottofunzione:

  1. Apriamo il file source
  2. Contiamo il numero di righe nel file aperto
  3. Chiudiamo il file (non ha senso tenerlo aperto inutilmente)
  4. Generiamo un numero intero casuale nell'intervallo del numero di righe del file source
  5. Apriamo il file source
  6. Stampiamo la riga corrispondente al numero generato
  7. 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 file

Dopo 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. Accedi, per favore.

Continuare "Termux passo dopo passo"?

  • No

Hanno votato 2 utenti. Nessun astenuto.

Fonte: habr.com

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster