Termux paso a paso (Parte 2)

В ultima parte nos familiarizamos con los comandos básicos de Termux, configuramos una conexión SSH a una PC, aprendimos a crear alias e instalamos varias utilidades útiles. Esta vez tenemos que dar un paso más allá, estamos contigo:

  • aprender sobre Termux:API
  • instale Python y nano, y escriba "¡Hola, mundo!" en pitón
  • aprenda sobre scripts bash y escriba un script usando Termux:API
  • usando un script bash, Termux:API y Python escribiremos un programa simple

Dado que ahora entendemos lo que hacen los comandos de entrada, a partir del siguiente paso no describiré cada acción con tanto detalle, pero donde pueda haber dificultades, definitivamente lo explicaré.

Utilizo mucho los alias, por lo que las abreviaturas utilizadas en esta parte se muestran aquí:

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

¡El plan está listo, puedes comenzar! Y por supuesto, no te olvides de la "pestaña mágica" (Ver Parte 1).

Paso 4

Buceando en Termux:API Rabbit Hole

API cuánto se ha fusionado en esta palabra para el corazón del codificador

Si no tocamos el tema de Termux: API, entonces todos nuestros pasos podrían reducirse a un simple recuento de algún folleto como "Linux for Dummies", como se señaló correctamente en los comentarios de la primera parte.

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

Termux paso a paso (Parte 2)

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

updg # Не забываем про alias’ы
apt install termux-api

Para la experimentación, estoy usando Android 5.1.1, para los propietarios de Android 7 deben "proteger" Termux: API yendo a 'Configuración'> 'Aplicaciones protegidas', de lo contrario, llamadas API como termux-battery-status, colgará. (Cm. wiki del proyecto)

Ahora vale la pena echar un vistazo más de cerca a las oportunidades adquiridas. La descripción más reciente y detallada de Termux:API se puede encontrar en wiki del proyecto. Intentaré elegir lo más visual e interesante, lo que me permitirá llenar mi mano para un trabajo independiente en el futuro.

Algunos ejemplos de Termux:API

  • termux-bateria-estado
    Devuelve el estado de la batería.
    Termux paso a paso (Parte 2)
  • termux-brillo
    Establece el brillo de la pantalla de 0 a 255
    Termux paso a paso (Parte 2)
  • termux-brindis
    Muestra una notificación de brindis temporal
    Termux paso a paso (Parte 2)
  • soplete termux
    Incluye 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)

Es fácil ver que los valores devueltos son cadenas, diccionarios, listas de diccionarios, en general, tipos de datos con los que Python funciona muy bien, por lo que el siguiente paso es configurarlo.

Paso 5

Instalar Python y nano

Para instalar Python, escribe en la terminal:

updg
apt install python
apt install python2

Ahora tenemos 2 y 3 Python instalados.

Mientras trabajaba en el artículo, descubrí otro editor de texto nano que me gustó más que vim, vamos a instalarlo:

apt install nano

Es más fácil de usar que vim y nano tiene una interfaz más fácil de usar. En un dispositivo Android, vim es aún más conveniente.

HelloWorld en Python en Termux

En general, era posible prescindir de este elemento, pero poner Python en Termux y no escribir HelloWorld, en mi opinión, es de mala educación.

No pretendo enseñar Python a nadie, por lo que aquellos que no saben pueden simplemente copiar el código (o comenzar a aprender por su cuenta, ya que hay suficiente literatura), y aquellos que saben pueden hacer algo por sí mismos. Y "bajo la apariencia" todavía mostraré una forma de ingresar texto en la terminal sin un editor.

cat >hello-world.py     
# Если не указывать источник (напоминаю cat 1.txt > 2.txt)
# то cat будет брать данные из стандартного потока ввода,
# проще говоря вводимое с клавиатуры.

str = ‘Hello, world!’ # присваиваем переменной str значение "Hello, world!"
print (str) # выводим на экран значение из переменной str

# Ctrl + D закончить ввод и записать файл (hello-world.py)

py hello-world.py # запускаем файл (py это alias от python)

Termux paso a paso (Parte 2)

Si no notó un error durante el proceso de entrada y ya presionó Enter, entonces no podrá ir a la línea de arriba, para hacer esto, finalice la entrada presionando Ctrl + D (generalmente puede interrumpir Ctrl + Z) y repetir todo desde el principio. Como usamos '>', el archivo se sobrescribirá por completo. Por esta razón, no recomiendo usar este método de entrada a menos que esté seguro de que escribirá el código inmediatamente sin errores.

Paso 6

guiones bash

Los scripts de Bash son una excelente manera de automatizar el trabajo de su terminal. El script es un archivo con la extensión .sh (la extensión es opcional) que contiene un conjunto de comandos de terminal, algunos de los cuales ya hemos estudiado. Aquí lista de la mayoría de los comandos, todo debería funcionar, pero tenga en cuenta que esta es una lista para Linux "adulto", no Termux, sino solo excelente material sobre guiones bash.

Con la ayuda de scripts, puede automatizar casi todas las acciones monótonas. Escribamos el script bash más simple que muestre el valor de la variable que creó, usaré cat nuevamente, puede usar un editor de texto normal, y aquellos que quieran entrenarse especialmente pueden usar echo.

cat >test.sh

export str="Привет, Хабр!"
# export создает переменную str
# и присваивает ей значение "Привет, Хабр!"
# Не ставьте пробелы до и после ‘=’

echo $str # Для обращения к переменным перед ними ставится ‘$’

# Ctrl + D

# ./test.sh для запуска скрипта, но если это сделать сейчас то будет ошибка
# для избавления от ошибки нужно сделать файл test.sh исполняемым

chmod +x test.sh
# chmod изменяет права доступа (+ добавить / - убрать)
# ‘+x’ означает что мы делаем файл исполняемым

./test.sh # Запускаем выполнение нашего скрипта

Termux paso a paso (Parte 2)

Script Bash con Termux:API

Escribamos algo diferente a los notorios HelloWorlds, pero igual de inútil. Nuestro guión será:

  1. ejecutar la solicitud de la API termux-battery-status
  2. guardar los datos recibidos en el archivo test.txt
  3. imprimir datos de un archivo a la pantalla
  4. ejecutar el programa hello-world.py previamente escrito
  5. escribe los datos recibidos del programa en el archivo test.txt
  6. imprimir datos de un archivo a la pantalla
  7. mover datos del archivo al portapapeles
  8. mostrar el contenido del portapapeles
  9. mostrar un mensaje emergente con datos del portapapeles

Primero, cree una carpeta para el trabajo y copie hello-world.py allí como test.py, cree archivos test.sh y test.txt en esta carpeta:

mkdir bashscript

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

cd bashscript/

touch test.sh test.txt # touch создает файлы

chmod +x test.sh

Ahora, de cualquier manera conveniente, escriba 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 escribimos el script de bash planeado. Puedes diluirlo con la salida a la 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 los términos de referencia
Después del lanzamiento, la aplicación debe colocar una línea aleatoria del archivo en el portapapeles y notificarlo con un mensaje emergente.

Tomaremos como base un script bash, extraeremos una línea aleatoria de un archivo usando una subrutina de Python. Hagamos un plan de trabajo de guión:

  1. Ejecutar subrutina
  2. Transferir el resultado de la subrutina al portapapeles
  3. Mostrar mensaje emergente

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

  • carpeta rndstr en el directorio de inicio
    • fuente: el archivo del que tomaremos líneas
    • rndstr.py: una subrutina que muestra una línea aleatoria desde el archivo fuente a la consola
    • rndstr.sh - archivo de secuencia de comandos

Cree un directorio de aplicaciones y muévase a él y cree archivos allí.

Los dos primeros puntos del plan de script se pueden combinar mediante una tubería, como resultado, usando Termux: API obtenemos:

#!/bin/bash

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

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

En el archivo fuente, puedes poner cualquier texto lógicamente dividido en líneas, decidí poner aforismos:

Listado de archivos fuente

Искренность не есть истина. Л. Лавель
Терпи и воздерживайся. Эпиктет
Благородно только то, что бескорыстно. Ж. Лабрюйер
Будь благоразумно отважным. Б. Грасиан
Доброта лучше красоты. Г. Гейне
Для великих дел необходимо неутомимое постоянство. Ф.Вольтер
Если ты хочешь, чтобы тебе всегда угождали, прислуживай себе сам. Б. Франклин
Чрезмерная скромность есть не что иное, как скрытая гордость. А. Шенье
Очень умным людям начинают не доверять, если видят их смущение. Ф. Ницше
Бедность указывает на отсутствие средств, а не на отсутствие благородства. Д. Боккаччо
Нужно остерегаться доведения скромности до степени унижения. А. Бакиханов
Кто отказывается от многого, может многое себе позволить. Ж. Шардон
Когда нам платят за благородный поступок, его у нас отнимают. Н. Шамфор
Не получить вовсе - не страшно, но лишиться полученного обидно. Клавдий Элиан
Легче переносить терпеливо то, что нам не дано исправить. Гораций
Устаешь ждать, но насколько хуже было бы, если бы ждать стало нечего. Б. Шоу
Все приходит вовремя, если люди умеют ждать. Ф. Рабле
Своим терпением мы можем достичь большего, чем силой. Э. Берк
Надо уметь переносить то, чего нельзя избежать. М. Монтень
Кто в деле смел, тот слов не устрашится. Софокл
Я не люблю сражаться, я люблю побеждать. Б. Шоу
Затравленный и прижатый к стене кот превращается в тигра. М. Сервантес
Достойный человек не идет по следам других людей. Конфуций
Великий ум проявит свою силу не только в умении мыслить, но и в умении жить. Р. Эмерсон
Слава - товар невыгодный. Стоит дорого, сохраняется плохо. О. Бальзак
Сдержанность и уместность в разговорах стоят больше красноречия. Ф. Бэкон
Кто молчать не умеет, тот и говорить, не способен. Сенека Младший
Хорошие манеры состоят из маленьких жертв. Ф. Честерфилд
Добрый человек не тот, кто умеет делать добро, а тот, кто не умеет делать зла. В. Ключевский
Не произносите бесповоротных суждений! Августин
Ничего слишком! Солон

Solo necesitamos crear una subrutina que extraiga una cadena aleatoria del archivo fuente.
Escribamos el algoritmo de la subrutina:

  1. Archivo de fuente abierta
  2. Contar el número de líneas en un archivo abierto
  3. Cierre el archivo (no hay nada que lo mantenga abierto por más tiempo)
  4. Generamos un entero aleatorio dentro del número de líneas del archivo fuente
  5. Archivo de fuente abierta
  6. Emitimos una línea debajo del número del número generado.
  7. Cerrar el archivo

Implementamos el algoritmo en Python (escribo bajo Python 3.7):

import random  #  импортируем для генерации случайных чисел
import os  #  для получения пути

path = os.path.abspath(__file__)  #  получаем прямой путь до файла rndstr.py
path = os.path.dirname(path)  #  преобразуем в путь до директории
path = path  + '/source'  #  преобразуем в путь до файла source

f = open(path)  #  открываем файл
i = 0  #  обнуляем счетчик
for str in f: i+=1  #  считаем строки файла
f.close  #  закрываем файл

j = int(round(i * random.random()))  #  генерируем целое случайное число от 0 до i

f = open(path)  #  открываем файл
i = 0  #  обнуляем счетчик
for str in f:  #  перебираем строки из файла
    if i == j:  #  если счетчик строк равен сгенерированному числу
        print (str, end='')  #  выводим строку без перехода на новую
        break  #  выходим из цикла
    i+=1  #  увеличиваем счетчик на 1
f.close  #  закрываем файл

Después de crear y escribir los archivos, debe otorgar permisos de ejecución al archivo. rndstr.shy cree un alias para un inicio rápido.

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

Ahora escribiendo en la terminal rnst Obtendremos un aforismo aleatorio en el portapapeles que, por ejemplo, se puede usar en la correspondencia.

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

Sal

En el último paso, intencionalmente no proporcioné capturas de pantalla y no analicé en detalle algunas de las acciones, escribiendo solo el contenido de los archivos para que los lectores tengan la oportunidad de trabajar por su cuenta.

Sobre este "Termux paso a paso", creo que merece la pena terminarlo. Por supuesto, estos son solo los primeros pasos, pero ahora puedes avanzar tú mismo.

Inicialmente, planeé mostrar en este ciclo cómo usar nmap, sqlmap, pero sin mí ya hay muchos artículos sobre este tema. Si quieres que continúe con el ciclo “Termux paso a paso”, entonces hay una encuesta a continuación y en los comentarios puedes sugerir sobre qué más escribir.

Solo los usuarios registrados pueden participar en la encuesta. Registrarsepor favor

Continuar "Termux paso a paso"?

  • No

2 usuarios votaron. No hay abstenciones.

Fuente: habr.com

Añadir un comentario