En 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" ().
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):

A continuación, necesitamos instalar el paquete API en la consola de Termux:
updg # No olvidemos los alias
apt install termux-apiPara 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 )
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 . 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-brightness
Establece el brillo de la pantalla de 0 a 255

- termux-toast
Muestra una notificación emergente temporal

- termux-torch
Activa la linterna

- termux-wifi-scaninfo
Devuelve información sobre el último escaneo de redes Wi-Fi

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 python2Ahora 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 nanoEs 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)
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á , todo debería funcionar, pero ten en cuenta que esta es una lista para un Linux 'maduro', no para Termux, y aquí hay simplemente .
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
Script Bash con Termux:API
Vamos a escribir algo diferente de los típicos HelloWorld, pero igualmente inútil. Nuestro script será:
- realizar una solicitud API termux-battery-status
- guardar los datos obtenidos en el archivo test.txt
- mostrar los datos del archivo en pantalla
- ejecutar el programa hello-world.py que hemos escrito anteriormente
- guardar los datos del programa en el archivo test.txt
- mostrar los datos del archivo en pantalla
- copiar los datos del archivo al portapapeles
- mostrar en pantalla el contenido del portapapeles
- 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.shAhora, 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 # пункт 9Ahora, estando en la carpeta bashscript, escribimos .\/test.sh observamos en la terminal en el dispositivo Android:

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:
- Ejecutar el subprograma
- Transferir el resultado del subprograma al portapapeles
- 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ónNos queda crear un subprograma que extraiga una cadena aleatoria del archivo source.
Describamos el algoritmo de funcionamiento del subprograma:
- Abrimos el archivo source
- Contamos la cantidad de líneas en el archivo abierto
- Cerramos el archivo (no hay necesidad de mantenerlo abierto más tiempo del necesario)
- Generamos un número entero aleatorio dentro del número de líneas del archivo source
- Abrimos el archivo source
- Mostramos la línea con el número generado
- 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 archivoDespué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. , por favor.
¿Continuar 'Termux paso a paso'?
Sí
No
Votaron 2 usuarios. No hay abstenciones.
Fuente: habr.com





