Termux paŝo post paŝo (Parto 2)

В lasta parto ni konatiĝis kun la bazaj komandoj de Termux, instalis SSH-konekton al komputilo, lernis kiel krei kaŝnomojn kaj instalis plurajn utilajn ilojn. Ĉi-foje ni devas paŝi eĉ pli, ni estas kun vi:

  • lerni pri Termux:API
  • instalu Python kaj nano, kaj skribu "Saluton, mondo!" en Python
  • lerni pri bash-skriptoj kaj verku skripton per Termux:API
  • uzante bash-skripton, Termux:API kaj Python ni skribos simplan programon

Ĉar ni nun komprenas, kion faras la enigkomandoj, tiam de la sekva paŝo mi ne priskribos ĉiun agon tiel detale, sed kie povas esti malfacilaĵoj, mi certe klarigos.

Mi uzas kaŝnomojn multe, do la mallongigoj uzataj en ĉi tiu parto estas montritaj ĉi tie:

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

La plano estas preta, vi povas komenci! Kaj kompreneble, ne forgesu pri la "magia Tab" (Vidu Parton 1).

paŝi 4

Plonĝado Laŭ la Termux:API Kuniklotruo

API kiom kunfandis en ĉi tiu vorto por la koro de la kodisto

Se ni ne tuŝas la temon de Termux: API, tiam ĉiuj niaj paŝoj povus reduktiĝi al simpla rerakonto de iu broŝuro kiel "Linukso por Dummies", kiel estis ĝuste notite en la komentoj al la unua parto.

Unue, instalu Termux:API de la Google Play Market (ne malutilas rekomenci Termux poste):

Termux paŝo post paŝo (Parto 2)

Poste, ni devas instali la API-pakaĵon en la Termux-konzolo:

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

Por eksperimentado mi uzas Android 5.1.1, por Android 7 posedantoj devas "protekti" Termux: API irante al 'Agordoj' > 'Protektitaj Aplikoj', alie API vokas kiel termux-battery-status, pendos. (Cm. projekto vikio)

Nun indas rigardi pli detale la akiritajn ŝancojn. La plej nova kaj detala priskribo de Termux:API troveblas ĉe projekto vikio. Mi provos elekti la plej vidan kaj interesan, kio permesos al mi plenigi mian manon por sendependa laboro estonte.

Kelkaj Termux:API-ekzemploj

  • termux-battery-status
    Redonas la staton de la baterio
    Termux paŝo post paŝo (Parto 2)
  • termux-brilo
    Agordas la brilecon de la ekrano de 0 ĝis 255
    Termux paŝo post paŝo (Parto 2)
  • termux-toast
    Montras provizoran tostan sciigon
    Termux paŝo post paŝo (Parto 2)
  • termux-torĉo
    Inkluzivas poŝlampon
    Termux paŝo post paŝo (Parto 2)
  • termux-wifi-scaninfo
    Liveras informojn pri la lasta skanado de Wifi-retoj
    Termux paŝo post paŝo (Parto 2)

Estas facile vidi, ke la revenaj valoroj estas ĉenoj, vortaroj, listoj de vortaroj, ĝenerale, datumtipoj, kun kiuj Python funkcias bonege, do la sekva paŝo estas agordi ĝin.

paŝi 5

Instalu Python kaj nano

Por instali Python, skribu en la terminalo:

updg
apt install python
apt install python2

Ni nun havas 2 kaj 3 Python instalita.

Laborante pri la artikolo, mi malkovris alian nanan tekstredaktilon, kiun mi ŝatis pli ol vim, ni instalu ĝin:

apt install nano

Ĝi estas pli facile uzebla ol vim, kaj nano havas pli afablan interfacon. Sur Android-aparato, vim ankoraŭ estas pli oportuna.

HelloWorld en Python ĉe Termux

Ĝenerale, eblis malhavi ĉi tiun objekton, sed meti Python en Termux kaj ne skribi HelloWorld, laŭ mi, estas malbonaj manieroj.

Mi ne celas instrui iun ajn Python, do tiuj, kiuj ne scias, povas simple kopii la kodon (aŭ eklerni memstare, ĉar ekzistas sufiĉe da literaturo), kaj tiuj kiuj scias povas fari ion mem. Kaj mi "sub la alivestiĝo" ankoraŭ montros manieron enigi tekston en la terminalo sen redaktilo.

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 paŝo post paŝo (Parto 2)

Se vi ne rimarkis eraron dum la enigprocezo kaj jam premis Enter, tiam vi ne povos iri al la supra linio, por fari tion, ĉesigu la enigon premante Ctrl + D (vi ĝenerale povas interrompi Ctrl + D). Z) kaj ripetu ĉion de la komenco. Ĉar ni uzis '>' tiam la dosiero estos tute anstataŭita. Tial mi ne rekomendas uzi ĉi tiun enigmetodon krom se vi certas, ke vi skribos la kodon tuj sen eraroj.

paŝi 6

Bash-skriptoj

Bash-skriptoj estas bonega maniero por aŭtomatigi vian terminalan laboron. La skripto estas dosiero kun la etendo .sh (la etendo estas nedeviga) enhavanta aron da finaj komandoj, kelkajn el kiuj ni jam studis. Jen listo de plej multaj komandoj, ĉio devus funkcii, sed rimarku, ke ĉi tio estas listo por "plenkreska" Linukso, ne Termux, sed nur bonega materialo pri bash-skriptoj.

Helpe de skriptoj, vi povas aŭtomatigi preskaŭ ĉiujn monotonajn agojn. Ni skribu la plej simplan bash-skripton, kiu montras la valoron el la variablo, kiun li kreis, mi denove uzos katon, vi povas uzi normalan tekstredaktilon, kaj tiuj, kiuj precipe volas trejni sin, povas uzi eĥon.

cat >test.sh

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

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

# Ctrl + D

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

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

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

Termux paŝo post paŝo (Parto 2)

Bash-skripto kun Termux:API

Ni skribu ion alian ol la famaj HelloWorlds, sed same senutila. Nia skripto estos:

  1. ekzekuti la API-peton termux-battery-status
  2. konservu la ricevitajn datumojn al la dosiero test.txt
  3. presi datumojn de dosiero al la ekrano
  4. ekzekuti la antaŭe skribitan hello-world.py programon
  5. skribu la datumojn ricevitajn de la programo al la dosiero test.txt
  6. presi datumojn de dosiero al la ekrano
  7. movi datumojn de dosiero al tondujo
  8. montri la enhavon de la tondujo
  9. montru ŝprucmesaĝon kun datumoj el la tondujo

Unue, kreu dosierujon por laboro kaj kopiu hello-world.py tie kiel test.py, kreu test.sh kaj test.txt dosierojn en ĉi tiu dosierujo:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Nun, laŭ iu ajn oportuna maniero, skribu la skripton al la dosiero 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

Nun, estante en la dosierujo bashscript, ni skribas ./test.sh ni observas en la terminalo sur la Android-aparato:

Termux paŝo post paŝo (Parto 2)

Do ni skribis la planitan bash-skripton. Vi povas dilui ĝin per la eligo al la konzolo de informoj pri la ekzekuto de ĉiu ago (uzante eĥon), mi lasos ĉi tion por la legantoj.

paŝi 7

Ni faru ion utilan

Relative utila

Ni formulu la terminojn de referenco
Post lanĉo, la aplikaĵo devus meti hazardan linion de la dosiero sur la tondujo kaj sciigi pri ĝi per pop-up mesaĝo.

Ni prenos bash-skripton kiel bazon, ni ĉerpos hazardan linion de dosiero uzante Python-subrutinon. Ni faru skripton laborplanon:

  1. Rulu subrutinon
  2. Transdonu la rezulton de la subrutino al la tondujo
  3. Montru ŝprucmesaĝon

Ni difinu la nomojn de la dosierujoj kaj aplikaj dosieroj:

  • rndstr dosierujo en hejma dosierujo
    • fonto - la dosiero el kiu ni prenos liniojn
    • rndstr.py - subrutino kiu montras hazardan linion de la fontdosiero al la konzolo
    • rndstr.sh - skriptodosiero

Kreu aplikan dosierujon kaj movu al ĝi kaj kreu dosierojn tie.

La unuaj du punktoj de la skriptoplano povas esti kombinitaj per dukto, kiel rezulto, uzante Termux: API ni ricevas:

#!/bin/bash

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

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

En la fontdosiero, vi povas meti ajnan tekston logike dividita en liniojn, mi decidis meti aforismojn:

Fontdosierlistigo

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

Ni nur bezonas krei subrutinon, kiu ĉerpas hazardan ĉenon el la fontdosiero.
Ni skribu la algoritmon de la subrutino:

  1. Malfermfonta dosiero
  2. Nombri la nombron da linioj en malfermita dosiero
  3. Fermu la dosieron (estas nenio por konservi ĝin malfermita por kroma tempo)
  4. Ni generas hazardan entjeron ene de la nombro da linioj de la fontdosiero
  5. Malfermfonta dosiero
  6. Ni eligas linion sub la nombro de la generita nombro
  7. Fermante la dosieron

Ni efektivigas la algoritmon en Python (mi skribas sub 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  #  закрываем файл

Post kiam la dosieroj estas kreitaj kaj skribitaj, vi devas doni al la dosiero ekzekutpermesoj rndstr.sh, kaj kreu kaŝnomon por rapida lanĉo.

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

Nun tajpante en terminalo rnst ni ricevos hazardan aforismon sur la tondujo, kiu ekzemple uzeblas en korespondado.

Ĉi tie ni skribis almenaŭ ion utilan. Relative utila.

Ps

En la lasta paŝo, mi intence ne disponigis ekrankopiojn kaj ne analizis detale iujn el la agoj, skribante nur la enhavon de la dosieroj por ke legantoj havu la ŝancon labori memstare.

Pri ĉi tiu "Termux paŝo post paŝo", mi pensas, ke ĝi indas fini. Kompreneble, ĉi tiuj estas nur la unuaj paŝoj, sed nun vi mem povas antaŭeniri.

Komence, mi planis montri en ĉi tiu ciklo kiel uzi nmap, sqlmap, sed sen mi jam estas multaj artikoloj pri ĉi tiu temo. Se vi volas, ke mi daŭrigu la ciklon "Termux paŝon post paŝo", tiam estas enketo sube kaj en la komentoj vi povas sugesti pri kio alia skribi.

Nur registritaj uzantoj povas partopreni la enketon. Ensaluti, bonvolu.

Ĉu daŭrigi "Termux paŝon post paŝo"?

  • Jes

  • Neniu

2 uzantoj voĉdonis. Ne estas sindetenoj.

fonto: www.habr.com

Aldoni komenton