В Запознайте се с основните команди на 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" ().
Стъпка 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Сега имаме инсталирани Python 2 и 3.
Докато работех по статията, открих още един текстов редактор 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 е алиас за python)
Ако по време на въвеждане не забелязахте грешка и вече натиснахте Enter, то не можете да се върнете на горния ред, за това завършете въвеждането, натискайки Ctrl + D (можете също да прекратите с Ctrl + Z) и повторете всичко отначало. Тъй като използвахме ‘>’, файлът ще бъде презаписан изцяло. Поради тази причина не препоръчвам да използвате такъв метод за въвеждане, ако не сте сигурни, че ще напишете кода веднага без грешки.
Стъпка 6
Bash-скриптове
Bash-скриптовете са чудесен начин за автоматизация на работата с терминала. Скрипт представлява файл с разширение .sh (разширението не е задължително), съдържащ набор от команди за терминала, част от които вече изучихме. Ето , всичко трябва да работи, но обърнете внимание, че това е списък за „възрастен“ Linux, а не за Termux, а ето просто .
С помощта на скриптове можем да автоматизираме почти всички монотонни действия. Нека напишем най-простия 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 можете да поставите произволен текст, логически разделен на редове, реших да поставя афоризми:
Листинг на файла source
Искренността не е истина. Л. Лавел
Търпи и се въздържай. Епиктет
Благородно е само онова, което е безкористно. Ж. Лабрюйер
Бъди разумно смел. Б. Грасиан
Добротата е по-добра от красотата. Г. Гейне
За велики дела е необходимо неуморно постоянство. Ф. Волтер
Ако искаш да ти угодят винаги, служи си сам. Б. Франклин
Прекалената скромност е нищо друго освен скрита гордост. А. Шений
Много умните хора започват да не бъдат доверявани, ако покажат смущение. Ф. Ницше
Бедността показва отсъствие на средства, а не на благородство. Д. Бокачо
Трябва да се пазим от довеждането на скромността до унижение. А. Бакиханов
Който отказва много, може да си позволи много. Ж. Шардон
Когато ни плащат за благороден постъпок, той ни се отнема. Н. Шамфор
Да не получиш нищо - не е страшно, но да загубиш полученото е обидно. Клавдий Елиан
По-лесно е да търпим онова, което не можем да поправим. Хораций
Уморен си да чакаш, но колко по-зле би било, ако нямаше какво да чакаш. Б. Шоу
Всичко идва навреме, ако хората умеят да чакат. Ф. Рабле
С търпението си можем да постигнем повече, отколкото със сила. Е. Бърк
Трябва да можем да търпим онова, което не можем да избегнем. М. Монтен
Който е смел в делото, не ще се плаши от словата. Софокъл
Не обичам да се боря, обичам да побеждавам. Б. Шоу
Изправен и притиснат до стената котка се превръща в тигър. М. Сервантес
Достойният човек не следва стъпките на другите. Конфуций
Великият ум ще прояви силата си не само в умението да мисли, но и в умението да живее. Р. Емерсън
Славата е непечеливш стока. Струва скъпо, но се задържа трудно. О. Балзак
Сдържаността и уместността в разговорите струват повече от красноречието. Ф. Бейкън
Който не може да мълчи, не може и да говори. Сенека Младши
Добри манери се състоят от малки жертви. Ф. Честърфилд
Добър човек не е онзи, който умее да прави добро, а онзи, който не умее да прави зло. В. Ключевски
Не произнасяйте необратими оценки! Августин
Нищо прекалено! СолонОстава ни да създадем подпрограма, която извлича случайна строка от файла 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 , ще получим в клипборда случайна афоризъм, която, например, можем да използваме в кореспонденцията.
Ето, че написахме нещо полезно. Относително полезно.
P.s.
Умишлено не показах скрийншотове в последната стъпка и не разгледах подробно някои действия, изброявайки само съдържанието на файловете, за да имат читателите възможност да работят самостоятелно.
На това "Termux стъпка по стъпка", мисля, че е време да приключим. Разбира се, това са само първите стъпки, но сега можете да продължите сами.
Първоначално планирах да покажа в този цикъл как да се използва nmap, sqlmap, но и без мен вече има много статии по тази тема. Ако имате желание да продължа цикъла "Termux стъпка по стъпка", долу има проучване, а в коментарите можете да предложите за какво още да пиша.
Само регистрирани потребители могат да участват в анкетата. , моля.
Да продължа "Termux стъпка по стъпка"?
Да
Не
Гласували 2 потребителя. Няма въздържали се.
Източник: habr.com





