Termux paso a paso (Parte 2)

В última parte familiarizamos cos comandos básicos de Termux, configuramos unha conexión SSH a un PC, aprendemos a crear alias e instalamos varias utilidades útiles. Esta vez temos que dar un paso máis, estamos contigo:

  • Obtén información sobre Termux:API
  • instala Python e nano e escribe "Ola, mundo!" en Python
  • aprende sobre os scripts bash e escribe un script usando Termux:API
  • usando un script bash, Termux:API e Python escribiremos un programa sinxelo

Xa que agora entendemos o que fan os comandos de entrada, a partir do seguinte paso non vou describir cada acción con tanto detalle, pero onde pode haber dificultades, definitivamente explicarei.

Eu uso moitos alias, polo que as abreviaturas utilizadas nesta parte móstranse aquí:

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

O plan está listo, podes comezar! E por suposto, non te esquezas da "pestaña máxica" (Ver a parte 1).

Paso 4

Mergullo polo Termux: API Rabbit Hole

API canto se fusionou nesta palabra para o corazón do codificador

Se non tocamos o tema de Termux: API, entón todos os nosos pasos poderían reducirse a un simple recuento dalgún folleto como "Linux for Dummies", como se sinalou con razón nos comentarios da primeira parte.

En primeiro lugar, instala Termux:API desde Google Play Market (non está mal reiniciar Termux despois):

Termux paso a paso (Parte 2)

A continuación, necesitamos instalar o paquete API na consola Termux:

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

Para experimentar, estou usando Android 5.1.1, para os propietarios de Android 7 necesitan "protexer" Termux: API indo a "Configuración" > "Aplicacións protexidas", se non, a API chama como termux-battery-status, vai colgar. (Cm. wiki do proxecto)

Agora paga a pena mirar máis de cerca as oportunidades adquiridas. A descrición máis recente e detallada de Termux:API pódese atopar en wiki do proxecto. Tentarei escoller o máis visual e interesante, que me permita encher a miña man para o traballo independente no futuro.

Algúns exemplos de Termux:API

  • termux-estado da batería
    Devolve o estado da batería
    Termux paso a paso (Parte 2)
  • termux-brillo
    Axusta o brillo da pantalla de 0 a 255
    Termux paso a paso (Parte 2)
  • termux-torrada
    Mostra unha notificación de brinde temporal
    Termux paso a paso (Parte 2)
  • termux-antorcha
    Inclúe lanterna
    Termux paso a paso (Parte 2)
  • termux-wifi-scaninfo
    Devolve información sobre a última exploración das redes wifi
    Termux paso a paso (Parte 2)

É fácil ver que os valores de retorno son cadeas, dicionarios, listas de dicionarios, en xeral, tipos de datos cos que Python funciona moi ben, polo que o seguinte paso é configuralo.

Paso 5

Instala Python e nano

Para instalar Python, escriba no terminal:

updg
apt install python
apt install python2

Agora temos instalado Python 2 e 3.

Mentres traballaba no artigo, descubrín outro editor de texto nano que me gustou máis que vim, instalémolo:

apt install nano

É máis fácil de usar que vim, e nano ten unha interface máis amigable. Nun dispositivo Android, vim aínda é máis cómodo.

HelloWorld en Python en Termux

En xeral, era posible prescindir deste elemento, pero poñer Python en Termux e non escribir HelloWorld, na miña opinión, é unha mala educación.

Non pretendo ensinar Python a ninguén, polo que os que non o saben poden simplemente copiar o código (ou comezar a aprender pola súa conta, xa que hai literatura suficiente), e os que saben poden facer algo eles mesmos. E "baixo a aparencia" aínda mostrarei unha forma de introducir texto no terminal sen 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)

Se non notaches un erro durante o proceso de entrada e xa premeches Intro, non poderás ir á liña de arriba. Para iso, finaliza a entrada premendo Ctrl + D (polo xeral podes interromper Ctrl + Z) e repite todo desde o principio. Como usamos '>', o ficheiro será completamente sobrescrito. Por este motivo, non recomendo usar este método de entrada a menos que estea seguro de que escribirá o código inmediatamente sen erros.

Paso 6

Scripts Bash

Os scripts Bash son unha boa forma de automatizar o traballo do teu terminal. O script é un ficheiro coa extensión .sh (a extensión é opcional) que contén un conxunto de comandos do terminal, algúns dos cales xa estudamos. Aquí lista da maioría dos comandos, todo debería funcionar, pero teña en conta que esta é unha lista para Linux "adulto", non Termux, senón só gran material sobre scripts bash.

Coa axuda de scripts, pode automatizar case todas as accións monótonas. Escribamos o script bash máis sinxelo que mostre o valor da variable que creou, usarei cat de novo, podes usar un editor de texto normal e aqueles que queiran especialmente adestrarse poden 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 aos notorios HelloWorlds, pero igual de inútil. O noso guión será:

  1. executa a solicitude da API termux-battery-status
  2. gardar os datos recibidos no ficheiro test.txt
  3. imprimir datos dun ficheiro na pantalla
  4. executa o programa hello-world.py escrito anteriormente
  5. escribir os datos recibidos do programa no ficheiro test.txt
  6. imprimir datos dun ficheiro na pantalla
  7. mover datos do ficheiro ao portapapeis
  8. mostrar o contido do portapapeis
  9. mostrar unha mensaxe emerxente cos datos do portapapeis

Primeiro, crea un cartafol para traballar e copia hello-world.py alí como test.py, crea ficheiros test.sh e test.txt neste cartafol:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Agora, de calquera forma conveniente, escribe o script no ficheiro 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

Agora, estando no cartafol bashscript, escribimos ./test.sh observamos no terminal do dispositivo Android:

Termux paso a paso (Parte 2)

Entón, escribimos o script bash previsto. Podes diluílo coa saída á consola de información sobre a execución de cada acción (usando echo), deixo isto para os lectores.

Paso 7

Fagamos algo útil

Relativamente útil

Formulemos os termos de referencia
Despois do lanzamento, a aplicación debe colocar unha liña aleatoria do ficheiro no portapapeis e notificar sobre iso cunha mensaxe emerxente.

Tomaremos como base un script bash, extraeremos unha liña aleatoria dun ficheiro usando unha subrutina de Python. Imos facer un plan de traballo do guión:

  1. Executar a subrutina
  2. Transferir o resultado da subrutina ao portapapeis
  3. Mostrar mensaxe emerxente

Imos definir os nomes do directorio e dos ficheiros da aplicación:

  • cartafol rndstr no directorio de inicio
    • fonte - o ficheiro do que tomaremos liñas
    • rndstr.py - unha subrutina que mostra unha liña aleatoria desde o ficheiro fonte ata a consola
    • rndstr.sh - ficheiro de script

Crear un directorio de aplicacións e mover a el e crear ficheiros alí.

Os dous primeiros puntos do plan de guión pódense combinar mediante unha canalización, como resultado, usando Termux: API obtemos:

#!/bin/bash

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

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

No ficheiro fonte, podes poñer calquera texto dividido loxicamente en liñas, decidín poñer aforismos:

Listaxe de ficheiros de orixe

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

Só necesitamos crear unha subrutina que extraia unha cadea aleatoria do ficheiro fonte.
Escribamos o algoritmo da subrutina:

  1. Ficheiro de código aberto
  2. Contar o número de liñas nun ficheiro aberto
  3. Pecha o ficheiro (non hai nada que o manteña aberto por tempo extra)
  4. Xeramos un número enteiro aleatorio dentro do número de liñas do ficheiro fonte
  5. Ficheiro de código aberto
  6. Saímos unha liña baixo o número do número xerado
  7. Pechando o ficheiro

Implementamos o algoritmo en Python (escribo baixo 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  #  закрываем файл

Despois de crear e escribir os ficheiros, cómpre darlle permisos de execución rndstr.sh, e cree un alias para o inicio rápido.

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

Agora escribindo no terminal rnst obteremos no portapapeis un aforismo aleatorio que, por exemplo, pode ser usado na correspondencia.

Aquí escribimos polo menos algo útil. Relativamente útil.

Ps

No último paso, intencionadamente non acheguei capturas de pantalla e non analizei en detalle algunhas das accións, escribindo só o contido dos ficheiros para que os lectores teñan a oportunidade de traballar por si mesmos.

Neste "Termux paso a paso", creo que paga a pena rematar. Por suposto, estes son só os primeiros pasos, pero agora podes avanzar ti mesmo.

Inicialmente, pensaba mostrar neste ciclo como usar nmap, sqlmap, pero sen min xa hai moitos artigos sobre este tema. Se queres que continúe co ciclo "Termux paso a paso", hai unha enquisa a continuación e nos comentarios podes suxerir que máis escribir.

Só os usuarios rexistrados poden participar na enquisa. Rexístrate, por favor.

Continuar "Termux paso a paso"?

  • Si

  • Non

Votaron 2 usuarios. Non hai abstencións.

Fonte: www.habr.com

Engadir un comentario