Termux paso a paso (Parte 2)

En en la parte anterior hemos conocido los comandos básicos de Termux, configurado la conexión SSH con la PC, aprendido a crear alias y instalado algunas utilidades útiles. Esta vez vamos a dar un paso más allá, y juntos:

  • vamos a aprender sobre Termux:API
  • instalaremos Python y nano, y también escribiremos "Hola, mundo!" en Python
  • aprenderemos sobre scripts bash y escribiremos un script utilizando Termux:API
  • usando un script bash, Termux:API y Python, escribiremos un programa simple

Dado que ahora entendemos lo que hacen los comandos que ingresamos, en el siguiente paso no detallaré tanto cada acción, pero donde haya posibles dificultades, explicaré sin falta.

Uso frecuentemente alias, por lo que los acrónimos utilizados en esta parte se muestran aquí:

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

¡El plan está listo, podemos comenzar! Y, por supuesto, no olviden el "mágico Tab" (Ver Parte 1).

Paso 4

Sumergiéndonos en el mundo de Termux:API

API, cuántas cosas se han unido en este término para el corazón de un coder

Si no tocamos el tema de Termux:API, todos nuestros pasos podrían resumirse a la simple narración de algún folleto como "Linux para dummies", como se observó acertadamente en los comentarios de la primera parte.

Primero instalaremos Termux:API desde Google Play Market (después no está de más reiniciar Termux):

Termux paso a paso (Parte 2)

A continuación, necesitamos instalar el paquete API en la consola de Termux:

updg # No olvidemos los alias
apt install termux-api

Para experimentos, estoy utilizando Android 5.1.1. Para los propietarios de Android 7, es necesario "proteger" Termux: API yendo a 'Configuraciones' > 'Aplicaciones protegidas'; de lo contrario, las llamadas a la API, como termux-battery-status, se bloquearán. (Ver wiki del proyecto)

Ahora vale la pena conocer más de cerca las capacidades adquiridas. La descripción más reciente y detallada de Termux:API se puede encontrar en wiki del proyecto. Yo trataré de seleccionar lo más visual e interesante para que se familiaricen y puedan trabajar de forma independiente en el futuro.

Algunos ejemplos de Termux:API

  • termux-battery-status
    Devuelve el estado de la batería
    Termux paso a paso (Parte 2)
  • termux-brightness
    Establece el brillo de la pantalla de 0 a 255
    Termux paso a paso (Parte 2)
  • termux-toast
    Muestra una notificación emergente temporal
    Termux paso a paso (Parte 2)
  • termux-torch
    Activa la linterna
    Termux paso a paso (Parte 2)
  • termux-wifi-scaninfo
    Devuelve información sobre el último escaneo de redes Wi-Fi
    Termux paso a paso (Parte 2)

No es difícil notar que los valores devueltos son cadenas, diccionarios, listas de diccionarios, en general, tipos de datos con los que Python trabaja a la perfección, por lo que el siguiente paso es instalarlo.

Paso 5

Instalaremos Python y nano

Para instalar Python, escribimos en la terminal:

updg
apt install python
apt install python2

Ahora tenemos instalado Python 2 y 3.

Mientras trabajaba en el artículo, descubrí otro editor de texto, nano, que me gustó más que vim, así que lo instalemos:

apt install nano

Es más fácil de usar que vim, y nano tiene una interfaz más amigable. En un dispositivo Android, sin embargo, es más conveniente usar vim.

HelloWorld en Python en Termux

En gran parte, se podría haber prescindido de este paso, pero instalar Python en Termux y no escribir HelloWorld, en mi opinión, es un error.

No tengo como objetivo enseñar a nadie Python, así que aquellos que no lo conocen pueden simplemente copiar el código (o comenzar a estudiarlo por su cuenta, afortunadamente hay mucha literatura), y los que ya saben pueden crear algo por su cuenta. Y yo, 'de paso', mostraré una forma de introducir texto en la terminal sin un editor.

cat >hello-world.py     
# Si no se especifica la fuente (recuerden cat 1.txt > 2.txt)
# entonces cat tomará datos de la entrada estándar,
# en otras palabras, lo que se escribe en el teclado.

str = 'Hello, world!' # asignamos a la variable str el valor "Hello, world!"
print (str) # mostramos en pantalla el valor de la variable str

# Ctrl + D para terminar la entrada y guardar el archivo (hello-world.py)

py hello-world.py # ejecutamos el archivo (py es un alias de python)

Termux paso a paso (Parte 2)

Si durante la entrada no notas un error y ya has presionado Enter, no podrás volver a la línea anterior, por lo que tendrás que terminar la entrada presionando Ctrl + D (puedes cancelar por completo con Ctrl + Z) y repetir todo desde el principio. Dado que usamos '>', el archivo se sobrescribirá completamente. Por esta razón, no recomiendo usar este método de entrada si no estás seguro de que escribirás el código sin errores desde el principio.

Paso 6

Scripts de Bash

Los scripts de Bash son una manera maravillosa de automatizar el trabajo en la terminal. Un script es un archivo con la extensión .sh (la extensión no es obligatoria) que contiene un conjunto de comandos de la terminal, algunos de los cuales ya hemos estudiado. Aquí está la lista de la mayoría de los comandos, todo debería funcionar, pero ten en cuenta que esta es una lista para un Linux 'maduro', no para Termux, y aquí hay simplemente un material excelente sobre scripts de bash.

Con scripts se puede automatizar prácticamente todas las acciones monótonas. Escribamos un sencillo script de bash que muestre el valor de una variable que él mismo ha creado; yo usaré nuevamente cat, pero ustedes pueden usar un editor de texto normal, y aquellos que deseen practicar pueden utilizar echo.

cat >test.sh

export str="¡Hola, Habr!"
# export crea la variable str
# y le asigna el valor "¡Hola, Habr!"
# No pongas espacios antes y después de ‘=’

echo $str # Para referirse a las variables se coloca ‘$’ antes

# Ctrl + D

# .\/test.sh para ejecutar el script, pero si se hace ahora habrá un error
# para evitar el error, hay que hacer el archivo test.sh ejecutable

chmod +x test.sh
# chmod cambia los permisos de acceso (+ agregar / - quitar)
# ‘+x’ significa que estamos haciendo el archivo ejecutable

.\/test.sh # Ejecutamos nuestro script

Termux paso a paso (Parte 2)

Script Bash con Termux:API

Vamos a escribir algo diferente de los típicos HelloWorld, pero igualmente inútil. Nuestro script será:

  1. realizar una solicitud API termux-battery-status
  2. guardar los datos obtenidos en el archivo test.txt
  3. mostrar los datos del archivo en pantalla
  4. ejecutar el programa hello-world.py que hemos escrito anteriormente
  5. guardar los datos del programa en el archivo test.txt
  6. mostrar los datos del archivo en pantalla
  7. copiar los datos del archivo al portapapeles
  8. mostrar en pantalla el contenido del portapapeles
  9. mostrar un mensaje emergente con los datos del portapapeles

Primero, crearemos una carpeta de trabajo y copiaremos hello-world.py como test.py, crearemos en esta carpeta los archivos test.sh y test.txt:

mkdir bashscript

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

cd bashscript/

touch test.sh test.txt # touch crea archivos

chmod +x test.sh

Ahora, de cualquier manera conveniente, escribiremos el script en el archivo test.sh:

#!/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

Ahora, estando en la carpeta bashscript, escribimos .\/test.sh observamos en la terminal en el dispositivo Android:

Termux paso a paso (Parte 2)

Así que hemos escrito el script de bash planeado. Se puede enriquecer con la salida en consola de información sobre la ejecución de cada acción (usando echo), esto lo dejo para los lectores.

Paso 7

Hagamos algo útil

Relativamente útil

Formulemos el pliego de condiciones
La aplicación debe colocar en el portapapeles una cadena aleatoria del archivo y notificarlo con un mensaje emergente.

Tomaremos como base el script de bash, extraeremos una cadena aleatoria del archivo usando un subprograma en Python. Elaboraremos el plan de trabajo del script:

  1. Ejecutar el subprograma
  2. Transferir el resultado del subprograma al portapapeles
  3. Mostrar un mensaje emergente

Definamos los nombres del directorio y los archivos de la aplicación:

  • carpeta rndstr en el directorio home
    • source — archivo del que tomaremos las líneas
    • rndstr.py — subprograma que imprime en consola una línea aleatoria del archivo source
    • rndstr.sh — archivo de script

Creamos el directorio de la aplicación y, una vez dentro, creamos los archivos allí.

Los dos primeros puntos del plan del script se pueden combinar en una tubería, al final, utilizando Termux:API obtenemos:

#!/bin/bash

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

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

En el archivo source puedes colocar cualquier texto lógicamente dividido en líneas, yo decidí colocar aforismos:

Listado del archivo source

La sinceridad no es la verdad. L. Lavelle
Soporta y abstente. Epiceto
Solo es noble lo que es desinteresado. J. La Bruyère
Sé prudentemente valiente. B. Gracián
La bondad es mejor que la belleza. G. Heine
Para grandes obras, se necesita una constancia infatigable. F. Voltaire
Si quieres que siempre te hagan caso, sírvete a ti mismo. B. Franklin
La excesiva modestia no es más que un orgullo oculto. A. Chenier
Las personas muy inteligentes comienzan a no ser de fiar si ven su confusión. F. Nietzsche
La pobreza indica la falta de medios, no la falta de nobleza. D. Boccaccio
Hay que tener cuidado de llevar la modestia hasta el punto de la humillación. A. Bakihanov
Quien renuncia a mucho, puede permitirse mucho. J. Chardon
Cuando nos pagan por una buena acción, nos la quitan. N. Chamfort
No recibir nada no es aterrador, pero perder lo que has recibido es doloroso. Claudio Eliano
Es más fácil soportar pacientemente lo que no podemos corregir. Horacio
Te cansas de esperar, pero cuánto peor sería si no hubiera nada que esperar. B. Shaw
Todo llega a su debido tiempo, si la gente sabe esperar. F. Rabelais
Con nuestra paciencia podemos lograr más que con la fuerza. E. Burke
Hay que saber soportar lo inevitable. M. Montaigne
Quien es valiente en acción no se asustará con palabras. Sófocles
No me gusta luchar, me gusta ganar. B. Shaw
Un gato acorralado y acorralado se convierte en un tigre. M. Cervantes
Una persona digna no sigue las huellas de otros. Confucio
Una gran mente mostrará su fuerza no solo en saber pensar, sino también en saber vivir. R. Emerson
La fama es una mercancía poco ventajosa. Es cara y se conserva mal. O. Balzac
La moderación y la adecuación en las conversaciones valen más que la elocuencia. F. Bacon
Quien no sabe callar, tampoco sabe hablar. Séneca el Joven
Los buenos modales consisten en pequeños sacrificios. F. Chesterfield
Un hombre bueno no es quien sabe hacer el bien, sino quien no sabe hacer el mal. V. Kliuchevski
¡No emitas juicios irrevocables! Agustín
¡Nada en exceso! Solón

Nos queda crear un subprograma que extraiga una cadena aleatoria del archivo source.
Describamos el algoritmo de funcionamiento del subprograma:

  1. Abrimos el archivo source
  2. Contamos la cantidad de líneas en el archivo abierto
  3. Cerramos el archivo (no hay necesidad de mantenerlo abierto más tiempo del necesario)
  4. Generamos un número entero aleatorio dentro del número de líneas del archivo source
  5. Abrimos el archivo source
  6. Mostramos la línea con el número generado
  7. Cerramos el archivo

Implementamos el algoritmo en Python (estoy escribiendo para Python 3.7):

import random  # importamos para generar números aleatorios
import os  # para obtener la ruta

path = os.path.abspath(__file__)  # obtenemos la ruta directa al archivo rndstr.py
path = os.path.dirname(path)  # transformamos en la ruta al directorio
path = path  + ' /source'  # transformamos en la ruta al archivo source

f = open(path)  # abrimos el archivo
i = 0  # reiniciamos el contador
for str in f: i+=1  # contamos las líneas del archivo
f.close  # cerramos el archivo

j = int(round(i * random.random()))  # generamos un número entero aleatorio de 0 a i

f = open(path)  # abrimos el archivo
i = 0  # reiniciamos el contador
for str in f:  # iteramos sobre las líneas del archivo
    if i == j:  # si el contador de líneas es igual al número generado
        print (str, end='')  # mostramos la línea sin un salto de línea
        break  # salimos del ciclo
    i+=1  # aumentamos el contador en 1
f.close  # cerramos el archivo

Después de que los archivos son creados y escritos, es necesario dar derechos de ejecución al archivo rndstr.sh, y crear un alias para un lanzamiento rápido.

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

Ahora, al introducir en la terminal rnst obtendremos en el portapapeles un aforismo aleatorio, que, por ejemplo, se puede usar en la correspondencia.

Aquí hemos escrito algo útil. Relativamente útil.

P.s.

Intencionalmente, en el último paso no incluí capturas de pantalla y no detallé algunas acciones, solo describí el contenido de los archivos, para que los lectores tuvieran la oportunidad de trabajar por su cuenta.

Con esto, creo que es momento de finalizar 'Termux paso a paso'. Por supuesto, son solo los primeros pasos, pero ahora pueden avanzar por su cuenta.

Inicialmente planeaba mostrar en este ciclo cómo usar nmap, sqlmap, pero ya hay muchos artículos sobre este tema. Si hay interés en que continúe el ciclo 'Termux paso a paso', hay una encuesta abajo y en los comentarios pueden proponer sobre qué más escribir.

Solo los usuarios registrados pueden participar en la encuesta. Inicie sesión, por favor.

¿Continuar 'Termux paso a paso'?

  • Sí

  • No

Votaron 2 usuarios. No hay abstenciones.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster