Термюкс кезең-кезеңімен (2 бөлім)

В соңғы бөлім Біз негізгі Termux командаларымен таныстық, ДК-мен SSH қосылымын орнаттық, бүркеншік аттарды жасауды үйрендік және бірнеше пайдалы утилиталарды орнаттық. Бұл жолы біз одан да көп жүруіміз керек, біз сіздермен біргеміз:

  • Termux: API туралы біліңіз
  • Python және nano-ны орнатып, «Сәлем, әлем!» деп жазайық. Python тілінде
  • bash сценарийлері туралы біліңіз және Termux:API арқылы сценарий жазыңыз
  • Bash сценарийі, Termux:API және Python көмегімен қарапайым бағдарламаны жазайық

Енгізілген пәрмендердің не істейтінін енді түсінетіндіктен, келесі қадамнан бастап мен әрбір әрекетті онша егжей-тегжейлі сипаттамаймын, бірақ қиындықтар туындауы мүмкін жерде міндетті түрде түсіндіремін.

Мен бүркеншік аттарды жиі қолданамын, сондықтан осы бөлімде қолданылатын аббревиатуралар мына жерде көрсетілген:

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

Жоспар дайын, біз бастай аламыз! Және, әрине, «сиқырлы қойынды» туралы ұмытпаңыз (1-бөлімді қараңыз).

қадам 4

Термукспен төмен сүңгу: API Rabbit Hole

API, бұл сөзде кодтардың жүрегі үшін қанша біріктірілді

Егер біз Termux:API тақырыбына тоқталмасақ, онда біздің барлық қадамдарымызды бірінші бөлімнің түсініктемелерінде дұрыс айтылғандай, «Linux for Dummies» сияқты брошюраны қарапайым қайталауға дейін қысқартуға болады.

Алдымен Google Play Market-тен Termux:API орнатайық (содан кейін Termux-ты қайта іске қосу зиян тигізбейді):

Термюкс кезең-кезеңімен (2 бөлім)

Содан кейін 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-батарея күйі
    Батарея күйін қайтарады
    Термюкс кезең-кезеңімен (2 бөлім)
  • termux-жарықтық
    Экран жарықтығын 0-ден 255-ке дейін орнатады
    Термюкс кезең-кезеңімен (2 бөлім)
  • термукс-тост
    Уақытша қалқымалы хабарландыруды көрсетеді
    Термюкс кезең-кезеңімен (2 бөлім)
  • термукс алау
    Қол шамы кіреді
    Термюкс кезең-кезеңімен (2 бөлім)
  • termux-wifi-scaninfo
    Wi-Fi желілерін соңғы сканерлеу туралы ақпаратты қайтарады
    Термюкс кезең-кезеңімен (2 бөлім)

Қайтару мәндері жолдар, сөздіктер, сөздіктер тізімдері, негізінен Python жақсы жұмыс істейтін деректер түрлері екенін түсіну оңай, сондықтан келесі қадам оны орнату болып табылады.

қадам 5

Python және nano орнатыңыз

Python орнату үшін терминалға жазыңыз:

updg
apt install python
apt install python2

Қазір бізде Python 2 және 3 орнатылған.

Осы мақаламен жұмыс істей отырып, мен басқа мәтіндік редакторды таптым, nano, ол маған vim-тен гөрі ұнады, оны орнатайық:

apt install nano

Оны пайдалану vim-ге қарағанда оңай, ал nano пайдаланушыға ыңғайлы интерфейске ие. Android құрылғысында vim әлі де ыңғайлы.

Termux ішіндегі Python-дағы HelloWorld

Жалпы алғанда, бұл тармақсыз жасауға болады, бірақ Termux-те Python-ды орнату және 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)

Термюкс кезең-кезеңімен (2 бөлім)

Енгізу процесінде сіз қатені байқамасаңыз және Enter пернесін басып қойсаңыз, жоғарыдағы жолға өте алмайсыз; ол үшін Ctrl + D пернелерін басу арқылы енгізуді аяқтаңыз (тіпті Ctrl + Z пернелерін үзуге болады) және бәрін басынан қайталаңыз. Біз '>' қолданылғандықтан, файл толығымен қайта жазылады. Осы себепті, кодты қатесіз бірден жазатыныңызға сенімді болмасаңыз, бұл енгізу әдісін пайдалануды ұсынбаймын.

қадам 6

Bash сценарийлері

Bash сценарийлері - терминал жұмысын автоматтандырудың тамаша тәсілі. Сценарий - бұл .sh кеңейтімі бар файл (кеңейтім міндетті емес) құрамында терминалдық пәрмендер жиынтығы бар, олардың кейбіреулерін біз бұрыннан зерттедік. Мұнда көптеген командалардың тізімі, бәрі жұмыс істеуі керек, бірақ бұл Termux үшін емес, «ересек» Linux үшін тізім екенін ескеріңіз. 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 # Запускаем выполнение нашего скрипта

Термюкс кезең-кезеңімен (2 бөлім)

Termux: API бар Bash сценарийі

Әйгілі HelloWorlds-тен басқа, бірақ пайдасыз нәрсе жазайық. Біздің сценарий болады:

  1. termux-battery-status API сұрауын орындау
  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 құрылғысындағы терминалда көреміз:

Термюкс кезең-кезеңімен (2 бөлім)

Осылайша біз жоспарланған bash сценарийін жаздық. Сіз оны консольге әрбір әрекеттің орындалуы туралы ақпаратты шығару арқылы сұйылта аласыз (эхо көмегімен), мен мұны оқырмандарға қалдырамын.

қадам 7

Пайдалы іспен айналысайық

Салыстырмалы түрде пайдалы

Техникалық тапсырманы құрастырайық
Іске қосылғаннан кейін қолданба алмасу буферіндегі файлдан кездейсоқ жолды орналастырып, бұл туралы қалқымалы хабарламамен хабарлауы керек.

Bash сценарийін негізге алайық және Python ішкі бағдарламасы арқылы файлдан кездейсоқ жолды шығарайық. Сценарийге жоспар құрайық:

  1. Ішкі бағдарламаны іске қосыңыз
  2. Ішкі бағдарламаның нәтижесін алмасу буферіне тасымалдаңыз
  3. Қалқымалы хабарды көрсетіңіз

Каталог пен қолданбалы файлдардың атауларын шешейік:

  • үй каталогындағы rndstr қалтасы
    • көзі - біз жолдарды алатын файл
    • rndstr.py - бастапқы файлдан консольге кездейсоқ жолды басып шығаратын ішкі бағдарлама
    • rndstr.sh - сценарий файлы

Біз қолданбалар каталогын жасаймыз және оған көшеміз және сол жерде файлдар жасаймыз.

Сценарий жоспарының алғашқы екі нүктесін конвейер арқылы біріктіруге болады, нәтижесінде Termux:API көмегімен біз аламыз:

#!/bin/bash

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

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

Бастапқы файлға логикалық түрде жолдарға бөлінген кез келген мәтінді қоюға болады, мен афоризмдерді қоюды шештім:

Бастапқы файлдар тізімі

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

Бізге тек бастапқы файлдан кездейсоқ жолды шығаратын ішкі бағдарлама жасау керек.
Ішкі программаның алгоритмін сипаттайық:

  1. Бастапқы файлды ашыңыз
  2. Ашық файлдағы жолдар санын санау
  3. Файлды жабыңыз (оны ұзақ уақыт бойы ашық ұстаудың қажеті жоқ)
  4. Бастапқы файлдағы жолдар санының ішінде кездейсоқ бүтін санды жасаңыз
  5. Бастапқы файлды ашыңыз
  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 rnst="~/rndstr/rndstr.sh"

Енді терминалға кіру арқылы rnst біз алмасу буферінде кездейсоқ афоризм аламыз, оны, мысалы, хат алмасуда қолдануға болады.

Сондықтан біз кем дегенде пайдалы нәрсе жаздық. Салыстырмалы түрде пайдалы.

Ps

Соңғы қадамда мен әдейі скриншоттарды бермедім және кейбір әрекеттерді егжей-тегжейлі талдамадым, тек файлдардың мазмұнын сипаттадым, осылайша оқырмандар өз бетімен жұмыс істеуге мүмкіндік алды.

Менің ойымша, бұл «Термуксті кезең-кезеңімен» аяқтаған жөн. Әрине, бұл алғашқы қадамдар ғана, бірақ енді сіз өз бетіңізше алға жылжи аласыз.

Бастапқыда мен осы серияда nmap, sqlmap пайдалану жолын көрсетуді жоспарладым, бірақ менсіз де бұл тақырып бойынша көптеген мақалалар бар. Егер сіз «Termux қадамдық» сериясын жалғастыруымды қаласаңыз, төменде сауалнама бар және түсініктемелерде тағы не туралы жазуды ұсына аласыз.

Сауалнамаға тек тіркелген пайдаланушылар қатыса алады. Кіру, өтінемін.

"Termux қадаммен" жалғастыру керек пе?

  • сол

  • жоқ

2 пайдаланушы дауыс берді. Қалыс қалғандар жоқ.

Ақпарат көзі: www.habr.com

пікір қалдыру