В
- даведаемся пра 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» (
Крок 4
Апускаемся ў трусіную нару Termux:API
API як шмат у гэтым слове для сэрца кодэра злілося
Калі не закранаць тэму Termux:API, то ўсе нашы крокі можна было звесці да простага пераказвання якой-небудзь брашуры тыпу "Лінукс для чайнікаў", як было справядліва прыкмечана ў каментарах да першай часткі.
Для пачатку ўсталюем Termux:API з Google Play Market'а (пасля не перашкодзіць перазапусціць Termux):
Далей нам трэба ўсталяваць пакет API у кансолі Termux'а:
updg # Не забываем про alias’ы
apt install termux-api
Для эксперыментаў я выкарыстоўваю Android 5.1.1, для ўладальнікаў Android 7 трэба «абараніць» Termux: API, зойдучы ў 'Налады' > 'Абаронаныя прыкладанні', у адваротным выпадку выклікі API, такія як termux-battery-status
, будуць завісаць. (Гл.
Цяпер стаіць бліжэй пазнаёміцца з набытымі магчымасцямі. Самае свежае і падрабязнае апісанне Termux: API можна знайсці на
Некалькі прыкладаў Termux: API
- termux-battery-status
Вяртае стан батарэі
- termux-brightness
Устанаўлівае яркасць экрана ад 0 да 255
- termux-toast
Паказвае часовае ўсплывальнае апавяшчэнне
- termux-torch
Уключае ліхтарык
- termux-wifi-scaninfo
Вяртае інфармацыю аб апошнім сканаванні сетак Wi-Fi
Няцяжка заўважыць, што якія вяртаюцца значэнні з'яўляюцца радкамі, слоўнікамі, спісамі слоўнікаў, увогуле тыпамі дадзеных, з якімі выдатна працуе 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)
Калі падчас уводу вы не заўважылі памылку і ўжо націснулі Enter, то перайсці на радок вышэй не атрымаецца, для гэтага скончыце ўвод націснуўшы Ctrl + D (можна наогул перапыніць Ctrl + Z) і паспрабуйце ўсё з пачатку. Паколькі мы выкарыстоўвалі '>', то файл будзе перапісаны цалкам. Па гэтай прычыне не рэкамендую выкарыстоўваць такі метад уводу, калі вы не ўпэўнены, што напішаце код адразу без памылак.
Крок 6
Bash-скрыпты
Bash-скрыпты гэта выдатны спосаб аўтаматызацыі працы з тэрміналам. Скрыпт уяўляе з сябе файл з пашырэннем .sh (пашырэнне не абавязкова) утрымоўвальны набор каманд тэрмінала частку з якіх мы ўжо вывучылі. Вось
Пры дапамозе скрыптоў можна аўтаматызаваць практычна ўсе манатонныя дзеянні. Напішам найпросты 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 # Запускаем выполнение нашего скрипта
Bash-скрыпт з Termux: API
Давайце напішам ужо што-небудзь адрознае ад праславутых HelloWorld'ов, але гэтак жа бескарыснае. Наш скрыпт будзе:
- выконваць запыт API termux-battery-status
- захоўваць атрыманыя дадзеныя ў файл test.txt
- выводзіць дадзеныя з файла на экран
- выконваць напісаную раней праграму hello-world.py
- атрыманыя ад праграмы дадзеныя запісваць у файл test.txt
- выводзіць дадзеныя з файла на экран
- пераносіць дадзеныя з файла ў буфер абмену
- выводзіць на экран змесціва буфера абмену
- выводзіць усплывальнае паведамленне з дадзенымі з буфера абмену
Спачатку створым тэчку для працы і скапіюем туды 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 прыладзе:
Вось мы і напісалі запланаваны bash-скрыпт. Можна развесці яго высновай у кансоль інфармацыі па выкананні кожнага дзеяння (пры дапамозе echo), гэта пакіну для чытачоў.
Крок 7
Зробім хоць нешта карыснае
Адносна карыснае
Сфармулюем тэхзаданне
Прыкладанне павінна пасля запуску змяшчаць у буфер абмену выпадковы радок з файла і апавяшчаць пра гэта ўсплывальным паведамленнем.
За аснову возьмем bash-скрыпт, выпадковы радок з файла будзем здабываць пры дапамозе падпраграмы на Python'е. Складзем план працы скрыпту:
- Запусціць падпраграму
- Перадаць вынік працы падпраграмы ў буфер абмену
- Вывесці ўсплывальнае паведамленне
Вызначымся з назвамі дырэкторыі і файлаў дадатку:
- тэчка 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.
Распішам алгарытм працы падпраграмы:
- Адкрываем файл source
- Лічым колькасць радкоў у адкрытым файле
- Закрываем файл (няма чаго яго лішні час адкрытым трымаць)
- Генераваны выпадковы цэлы лік у межах колькасці радкоў файла source
- Адкрываем файл source
- Выводзім радок пад нумарам згенераванага ліку
- Закрываем файл
Рэалізуемы алгарытм на 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