Termux крок за крокам (Частка 2)

В мінулай часткі мы з вамі пазнаёміліся з базавымі камандамі Termux'а, наладзілі SSH злучэнне з ПК, навучыліся ствараць alias'ы і ўсталявалі некалькі карысных утыліт. На гэты раз нам трэба будзе ступіць яшчэ далей, мы з вамі:

  • даведаемся пра Termux:API
  • усталюем Python і nano, а таксама напішам «Hello, world!» на Python
  • даведаемся пра bash-скрыпты, і напішам скрыпт з выкарыстаннем Termux:API
  • выкарыстоўваючы bash-скрыпт, Termux: API і Python напішам простую праграмку

Паколькі мы зараз разумеем, што робяць уводныя каманды, то з наступнага кроку я не буду так падрабязна распісваць кожнае дзеянне, але тамака дзе могуць быць цяжкасці, тлумачыць буду абавязкова.

Я часта ўжываю alias'ы, таму выкарыстоўваныя ў гэтай частцы скарачэння паказаны тут:

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

План гатовы, можна прыступаць! І вядома ж не забывайце пра «чарадзейны Tab» (Глядзіце Частка 1).

Крок 4

Апускаемся ў трусіную нару Termux:API

API як шмат у гэтым слове для сэрца кодэра злілося

Калі не закранаць тэму Termux:API, то ўсе нашы крокі можна было звесці да простага пераказвання якой-небудзь брашуры тыпу "Лінукс для чайнікаў", як было справядліва прыкмечана ў каментарах да першай часткі.

Для пачатку ўсталюем Termux:API з Google Play Market'а (пасля не перашкодзіць перазапусціць Termux):

Termux крок за крокам (Частка 2)

Далей нам трэба ўсталяваць пакет API у кансолі Termux'а:

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

Для эксперыментаў я выкарыстоўваю Android 5.1.1, для ўладальнікаў Android 7 трэба «абараніць» Termux: API, зойдучы ў 'Налады' > 'Абаронаныя прыкладанні', у адваротным выпадку выклікі API, такія як termux-battery-status, будуць завісаць. (Гл. wiki праекта)

Цяпер стаіць бліжэй пазнаёміцца ​​з набытымі магчымасцямі. Самае свежае і падрабязнае апісанне Termux: API можна знайсці на wiki праекта. Я ж пастараюся выбраць самае нагляднае і цікавае, што дазволіць набіць руку для самастойнай працы ў далейшым.

Некалькі прыкладаў Termux: API

  • termux-battery-status
    Вяртае стан батарэі
    Termux крок за крокам (Частка 2)
  • termux-brightness
    Устанаўлівае яркасць экрана ад 0 да 255
    Termux крок за крокам (Частка 2)
  • termux-toast
    Паказвае часовае ўсплывальнае апавяшчэнне
    Termux крок за крокам (Частка 2)
  • termux-torch
    Уключае ліхтарык
    Termux крок за крокам (Частка 2)
  • termux-wifi-scaninfo
    Вяртае інфармацыю аб апошнім сканаванні сетак Wi-Fi
    Termux крок за крокам (Частка 2)

Няцяжка заўважыць, што якія вяртаюцца значэнні з'яўляюцца радкамі, слоўнікамі, спісамі слоўнікаў, увогуле тыпамі дадзеных, з якімі выдатна працуе Python, таму наступным крокам мы яго ўсталюем.

Крок 5

Усталюем Python і nano

Для ўсталёўкі Python'а пішам у тэрмінале:

updg
apt install python
apt install python2

Цяпер у нас усталяваны 2 і 3 Python.

За час працы над артыкулам, я адкрыў для сябе яшчэ адзін тэкставы рэдактар ​​nano, які спадабаўся мне больш за vim, давайце яго ўсталюем:

apt install nano

Карыстацца ім прасцей, чым vim'ом, і nano мае больш дружалюбны інтэрфейс. На Android прыладзе ўсё ж зручней vim.

HelloWorld на Python у Termux

Па вялікім рахунку можна было абыйсціся і без гэтага пункта, але паставіць Python у Termux і не напісаць HelloWorld, на мой погляд, маветон.

Я не стаўлю сваёй мэтай вучыць каго-небудзь Python'у, так што не дасведчаныя могуць проста скапіяваць код (ці пачаць вывучаць самастойна, балазе літаратуры хапае), а дасведчаныя могуць і самі што-небудзь наваяваць. А я "пад шумок" яшчэ пакажу спосаб уводзіць тэкст у тэрмінале без рэдактара.

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 крок за крокам (Частка 2)

Калі падчас уводу вы не заўважылі памылку і ўжо націснулі Enter, то перайсці на радок вышэй не атрымаецца, для гэтага скончыце ўвод націснуўшы Ctrl + D (можна наогул перапыніць Ctrl + Z) і паспрабуйце ўсё з пачатку. Паколькі мы выкарыстоўвалі '>', то файл будзе перапісаны цалкам. Па гэтай прычыне не рэкамендую выкарыстоўваць такі метад уводу, калі вы не ўпэўнены, што напішаце код адразу без памылак.

Крок 6

Bash-скрыпты

Bash-скрыпты гэта выдатны спосаб аўтаматызацыі працы з тэрміналам. Скрыпт уяўляе з сябе файл з пашырэннем .sh (пашырэнне не абавязкова) утрымоўвальны набор каманд тэрмінала частку з якіх мы ўжо вывучылі. Вось спіс большасці каманд, усё павінна працаваць, але звернеце ўвагу, што гэта спіс для «дарослага» Linux'а, а не для Termux'а, а вось проста шыкоўны матэрыял па bash-скрыптах.

Пры дапамозе скрыптоў можна аўтаматызаваць практычна ўсе манатонныя дзеянні. Напішам найпросты bash-скрыпт выводзіць значэнне са створанай ім жа зменнай, я зноў скарыстаюся cat'ам, вы ж можаце выкарыстоўваць нармальны тэкставы рэдактар, а асоба жадаючыя сябе патрэніраваць могуць выкарыстоўваць 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 крок за крокам (Частка 2)

Bash-скрыпт з Termux: API

Давайце напішам ужо што-небудзь адрознае ад праславутых HelloWorld'ов, але гэтак жа бескарыснае. Наш скрыпт будзе:

  1. выконваць запыт API termux-battery-status
  2. захоўваць атрыманыя дадзеныя ў файл test.txt
  3. выводзіць дадзеныя з файла на экран
  4. выконваць напісаную раней праграму hello-world.py
  5. атрыманыя ад праграмы дадзеныя запісваць у файл test.txt
  6. выводзіць дадзеныя з файла на экран
  7. пераносіць дадзеныя з файла ў буфер абмену
  8. выводзіць на экран змесціва буфера абмену
  9. выводзіць усплывальнае паведамленне з дадзенымі з буфера абмену

Спачатку створым тэчку для працы і скапіюем туды hello-world.py як test.py, створым у гэтай тэчцы файлы test.sh і test.txt:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Цяпер любым зручным спосабам у файл 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

Цяпер знаходзячыся ў тэчцы bashscript пішам ./test.sh назіраем у тэрмінале на Android прыладзе:

Termux крок за крокам (Частка 2)

Вось мы і напісалі запланаваны bash-скрыпт. Можна развесці яго высновай у кансоль інфармацыі па выкананні кожнага дзеяння (пры дапамозе echo), гэта пакіну для чытачоў.

Крок 7

Зробім хоць нешта карыснае

Адносна карыснае

Сфармулюем тэхзаданне
Прыкладанне павінна пасля запуску змяшчаць у буфер абмену выпадковы радок з файла і апавяшчаць пра гэта ўсплывальным паведамленнем.

За аснову возьмем bash-скрыпт, выпадковы радок з файла будзем здабываць пры дапамозе падпраграмы на Python'е. Складзем план працы скрыпту:

  1. Запусціць падпраграму
  2. Перадаць вынік працы падпраграмы ў буфер абмену
  3. Вывесці ўсплывальнае паведамленне

Вызначымся з назвамі дырэкторыі і файлаў дадатку:

  • тэчка rndstr ў хатняй дырэкторыі
    • source - файл з якога будзем браць радкі
    • rndstr.py - падпраграма выводзіць у кансоль выпадковы радок з файла source
    • rndstr.sh - файл скрыпту

Ствараем дырэкторыю прыкладання і перамясціўшыся ў яе ствараем тамака файлы.

Першыя два пункты плана скрыпту можна аб'яднаць канвеерам, у выніку, выкарыстоўваючы Termux:API атрымліваем:

#!/bin/bash

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

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

У файл source вы можаце змясціць любы тэкст лагічна падзелены на радкі, я вырашыў змясціць афарызмы:

Лістынг файла sourse

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

Нам засталося стварыць падпраграму вымаемы выпадковы радок з файла source.
Распішам алгарытм працы падпраграмы:

  1. Адкрываем файл source
  2. Лічым колькасць радкоў у адкрытым файле
  3. Закрываем файл (няма чаго яго лішні час адкрытым трымаць)
  4. Генераваны выпадковы цэлы лік у межах колькасці радкоў файла source
  5. Адкрываем файл source
  6. Выводзім радок пад нумарам згенераванага ліку
  7. Закрываем файл

Рэалізуемы алгарытм на Python (я пішу пад 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  #  закрываем файл

Пасля таго як файлы створаны і запісаны, трэба даць правы на выкананне файлу rndstr.sh, і стварыць alias для хуткага запуску.

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

Цяпер увёўшы ў тэрмінале rnst мы атрымаем у буфер абмену выпадковы афарызм, які, напрыклад, можна выкарыстоўваць у перапісцы.

Вось мы і напісалі хоць нешта карыснае. Адносна карыснае.

Ps

Я наўмысна ў апошнім кроку не стаў прыводзіць скрыншоты і не разабраў падрабязна некаторыя дзеянні, распісаўшы толькі змесціва файлаў, каб у чытачоў была магчымасць папрацаваць самастойна.

На гэтым "Termux крок за крокам", думаю, варта скончыць. Вядома ж гэта толькі самыя першыя крокі, але зараз вы можаце рухацца наперад самі.

Першапачаткова я планаваў паказаць у гэтым цыкле, як карыстацца nmap, sqlmap, але і без мяне ўжо шмат артыкулаў на гэтую тэму. Калі ёсць жаданне каб я працягнуў цыкл "Termux крок за крокам", то ніжэй ёсць апытанне а ў каментарах можаце прапанаваць аб чым яшчэ напісаць.

Толькі зарэгістраваныя карыстачы могуць удзельнічаць у апытанні. Увайдзіце, Калі ласка.

Працягнуць "Termux крок за крокам"?

  • Так

  • Няма

Прагаласавалі 2 карыстальніка. Устрыманых няма.

Крыніца: habr.com

Дадаць каментар