Termux pas a pas (part 2)

В darrera part ens vam familiaritzar amb les ordres bàsiques de Termux, vam configurar una connexió SSH a un ordinador, vam aprendre a crear àlies i vam instal·lar diverses utilitats útils. Aquesta vegada hem de fer un pas més, estem amb vosaltres:

  • aprendre sobre Termux:API
  • instal·leu Python i nano i escriviu "Hola, món!" en Python
  • aprendre sobre els scripts bash i escriure un script amb Termux:API
  • utilitzant un script bash, Termux:API i Python escriurem un programa senzill

Com que ara entenem què fan les ordres d'entrada, a partir del pas següent no descriuré cada acció amb tant de detall, però quan hi pugui haver dificultats, definitivament ho explicaré.

Utilitzo molt àlies, de manera que les abreviatures utilitzades en aquesta part es mostren aquí:

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

El pla està llest, ja pots començar! I, per descomptat, no us oblideu de la "pestanya màgica" (Vegeu la part 1).

Pas 4

Immersió pel Termux: API Rabbit Hole

API quant s'ha fusionat en aquesta paraula per al cor del codificador

Si no toquem el tema de Termux: API, aleshores tots els nostres passos es podrien reduir a una simple repetició d'algun fulletó com "Linux for Dummies", com es va assenyalar amb raó als comentaris de la primera part.

Primer, instal·leu Termux:API des de Google Play Market (no fa mal reiniciar Termux després):

Termux pas a pas (part 2)

A continuació, hem d'instal·lar el paquet API a la consola Termux:

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

Per experimentar, estic fent servir Android 5.1.1, els propietaris d'Android 7 han de "protegir" Termux: API anant a "Configuració" > "Aplicacions protegides", en cas contrari, l'API crida com termux-battery-status, penjarà. (Cm. wiki del projecte)

Ara val la pena mirar més de prop les oportunitats adquirides. La descripció més recent i detallada de Termux:API es pot trobar a wiki del projecte. Intentaré triar el més visual i interessant, que em permeti omplir la mà per a un treball independent en el futur.

Alguns exemples de Termux:API

  • termux-estat de la bateria
    Retorna l'estat de la bateria
    Termux pas a pas (part 2)
  • termux-lluminositat
    Estableix la brillantor de la pantalla de 0 a 255
    Termux pas a pas (part 2)
  • termux-torrada
    Mostra una notificació de brindis temporal
    Termux pas a pas (part 2)
  • termux-torxa
    Inclou llanterna
    Termux pas a pas (part 2)
  • termux-wifi-scaninfo
    Retorna informació sobre l'última exploració de xarxes Wi-Fi
    Termux pas a pas (part 2)

És fàcil veure que els valors de retorn són cadenes, diccionaris, llistes de diccionaris, en general, tipus de dades amb els quals Python funciona molt bé, de manera que el següent pas és configurar-lo.

Pas 5

Instal·leu Python i nano

Per instal·lar Python, escriviu al terminal:

updg
apt install python
apt install python2

Ara tenim instal·lat Python 2 i 3.

Mentre treballava en l'article, vaig descobrir un altre editor de text nano que m'agradava més que vim, instal·lem-lo:

apt install nano

És més fàcil d'utilitzar que vim i el nano té una interfície més fàcil d'utilitzar. En un dispositiu Android, vim encara és més convenient.

HelloWorld a Python a Termux

En general, era possible prescindir d'aquest element, però posar Python a Termux i no escriure HelloWorld, al meu entendre, és una mala educació.

No pretenc ensenyar Python a ningú, de manera que els que no ho saben poden simplement copiar el codi (o començar a aprendre pel seu compte, ja que hi ha prou literatura), i els que ho saben poden fer alguna cosa ells mateixos. I "sota la disfressa" encara mostraré una manera d'introduir text al terminal sense 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 pas a pas (part 2)

Si no heu notat cap error durant el procés d'entrada i ja heu premut Enter, no podreu anar a la línia de dalt, per fer-ho, finalitzeu l'entrada prement Ctrl + D (generalment podeu interrompre Ctrl + D). Z) i repeteix-ho tot des del principi. Com que hem utilitzat '>', el fitxer es sobreescriurà completament. Per aquest motiu, no recomano utilitzar aquest mètode d'entrada tret que estigueu segur que escriureu el codi immediatament sense errors.

Pas 6

Scripts Bash

Els scripts Bash són una bona manera d'automatitzar el treball del vostre terminal. L'script és un fitxer amb l'extensió .sh (l'extensió és opcional) que conté un conjunt d'ordres de terminal, algunes de les quals ja hem estudiat. Aquí llista de la majoria d'ordres, tot hauria de funcionar, però tingueu en compte que aquesta és una llista per a Linux "adult", no Termux, sinó només gran material sobre scripts bash.

Amb l'ajuda dels scripts, podeu automatitzar gairebé totes les accions monòtones. Escrivim l'script bash més senzill que mostri el valor de la variable que va crear, tornaré a utilitzar cat, podeu utilitzar un editor de text normal i aquells que vulguin entrenar-se especialment poden utilitzar 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 pas a pas (part 2)

Script Bash amb Termux:API

Escrivim alguna cosa diferent dels notoris HelloWorlds, però igual de inútil. El nostre guió serà:

  1. executeu la sol·licitud de l'API termux-battery-status
  2. deseu les dades rebudes al fitxer test.txt
  3. imprimir dades d'un fitxer a la pantalla
  4. executeu el programa hello-world.py escrit anteriorment
  5. escriviu les dades rebudes del programa al fitxer test.txt
  6. imprimir dades d'un fitxer a la pantalla
  7. moure les dades del fitxer al porta-retalls
  8. mostrar el contingut del porta-retalls
  9. mostrar un missatge emergent amb dades del porta-retalls

Primer, creeu una carpeta per treballar i copieu-hi hello-world.py com a test.py, creeu fitxers test.sh i test.txt en aquesta carpeta:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Ara, de qualsevol manera convenient, escriviu l'script al fitxer 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

Ara, en estar a la carpeta bashscript, escrivim ./test.sh observem al terminal del dispositiu Android:

Termux pas a pas (part 2)

Així que vam escriure l'script de bash previst. Podeu diluir-lo amb la sortida a la consola d'informació sobre l'execució de cada acció (utilitzant echo), això ho deixaré per als lectors.

Pas 7

Fem alguna cosa útil

Relativament útil

Formulem els termes de referència
Després del llançament, l'aplicació hauria de col·locar una línia aleatòria del fitxer al porta-retalls i notificar-ho amb un missatge emergent.

Prenem com a base un script bash, extreurem una línia aleatòria d'un fitxer utilitzant una subrutina de Python. Fem un pla de treball del guió:

  1. Executeu la subrutina
  2. Transferiu el resultat de la subrutina al porta-retalls
  3. Mostra un missatge emergent

Definim els noms del directori i dels fitxers d'aplicació:

  • carpeta rndstr al directori d'inici
    • font - el fitxer del qual agafarem les línies
    • rndstr.py: una subrutina que mostra una línia aleatòria des del fitxer font fins a la consola
    • rndstr.sh - fitxer d'script

Creeu un directori d'aplicació i aneu-hi i creeu-hi fitxers.

Els dos primers punts del pla de script es poden combinar mitjançant un pipeline, com a resultat, utilitzant Termux: API obtenim:

#!/bin/bash

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

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

Al fitxer font, podeu posar qualsevol text dividit lògicament en línies, vaig decidir posar aforismes:

Llistat de fitxers font

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

Només hem de crear una subrutina que extreu una cadena aleatòria del fitxer font.
Escrivim l'algorisme de la subrutina:

  1. Fitxer de codi obert
  2. Comptar el nombre de línies d'un fitxer obert
  3. Tanqueu el fitxer (no hi ha res que el mantingui obert durant més temps)
  4. Generem un nombre enter aleatori dins del nombre de línies del fitxer font
  5. Fitxer de codi obert
  6. Sortim una línia sota el número del número generat
  7. Tancant l'arxiu

Implementem l'algorisme a Python (escric sota 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  #  закрываем файл

Un cop creats i escrits els fitxers, heu de donar els permisos d'execució del fitxer rndstr.sh, i creeu un àlies per a un llançament ràpid.

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

Ara escrivint al terminal rnst obtindrem un aforisme aleatori al porta-retalls, que, per exemple, es pot utilitzar en correspondència.

Aquí hem escrit almenys alguna cosa útil. Relativament útil.

ps

En l'últim pas, intencionadament no vaig proporcionar captures de pantalla i no vaig analitzar en detall algunes de les accions, escrivint només el contingut dels fitxers perquè els lectors tinguessin l'oportunitat de treballar pel seu compte.

En aquest "Termux pas a pas", crec que val la pena acabar. Per descomptat, aquests són només els primers passos, però ara podeu avançar vosaltres mateixos.

Inicialment, tenia previst mostrar en aquest cicle com utilitzar nmap, sqlmap, però sense mi ja hi ha molts articles sobre aquest tema. Si voleu que continuï el cicle "Termux pas a pas", hi ha una enquesta a continuació i als comentaris podeu suggerir què més escriure.

Només els usuaris registrats poden participar en l'enquesta. Inicia sessiósi us plau.

Continueu "Termux pas a pas"?

  • No

Han votat 2 usuaris. No hi ha abstencions.

Font: www.habr.com

Afegeix comentari