Термюкс этап менен (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 темасына токтолбосок, анда биздин бардык кадамдарыбызды биринчи бөлүктүн комментарийлеринде туура айтылгандай, "Линукс 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-бөлүк)
  • termux-факел
    Кол чырак камтыйт
    Термюкс этап менен (2-бөлүк)
  • termux-wifi-scaninfo
    Wi-Fi тармактарынын акыркы скандоосу тууралуу маалыматты кайтарат
    Термюкс этап менен (2-бөлүк)

Кайтаруу маанилери саптар, сөздүктөр, сөздүктөрдүн тизмелери, негизинен Python менен жакшы иштеген маалымат түрлөрү экенин көрүү оңой, андыктан кийинки кадам - ​​аны орнотуу.

кадам 5

Python жана nano орнотуу

Python орнотуу үчүн терминалга жазыңыз:

updg
apt install python
apt install python2

Азыр бизде Python 2 жана 3 орнотулду.

Бул макалада иштеп жатып, мен дагы бир текст редакторун таптым, нано, ал мага vimге караганда көбүрөөк жакты, аны орнотуп көрөлү:

apt install nano

Аны колдонуу vimге караганда оңой жана нано колдонуучуга ыңгайлуу интерфейске ээ. Android түзмөгүндө vim дагы эле ыңгайлуу.

HelloWorld in Python in 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)

Термюкс этап менен (2-бөлүк)

Киргизүү процессинде сиз катаны байкабай калсаңыз жана Enter баскычын басып койсоңуз, анда сиз жогорудагы сапка өтө албайсыз; бул үчүн Ctrl + D баскычтарын басуу менен кирүүнү бүтүрүңүз (Ctrl + Z баскычтарын да үзгүлтүккө учуратсаңыз болот) жана баарын башынан кайтала. Биз '>' колдонгондуктан, файл толугу менен кайра жазылат. Ушул себептен улам, эгер сиз кодду дароо катасыз жазарыңызга ишенбесеңиз, бул киргизүү ыкмасын колдонууну сунуштабайм.

кадам 6

Баш скрипттери

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 # Запускаем выполнение нашего скрипта

Термюкс этап менен (2-бөлүк)

Termux:API менен Bash скрипти

Келгиле, белгилүү HelloWorldsтен башкача бир нерсе жазалы, бирок пайдасыз. Биздин сценарий болот:

  1. termux-батарея-статус 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 биз алмашуу буферинде туш келди афоризмди алабыз, аны, мисалы, кат алышууда колдонсо болот.

Ошентип, жок дегенде пайдалуу нерсе жаздык. Салыштырмалуу пайдалуу.

Заб

Акыркы кадамда, мен атайылап скриншотторду берген жокмун жана айрым аракеттерди майда-чүйдөсүнө чейин талдап, окурмандар өз алдынча иштөө мүмкүнчүлүгүнө ээ болушу үчүн файлдардын мазмунун гана сүрөттөп берген жокмун.

Мен бул "Термукс кадамын" бүтүрүүгө арзырлык деп ойлойм. Албетте, бул эң алгачкы кадамдар, бирок эми сиз өз алдынча алга жыла аласыз.

Башында мен бул серияда nmap, sqlmapды кантип колдонууну көрсөтүүнү пландаштыргам, бирок менсиз деле бул тема боюнча көптөгөн макалалар бар. Эгер сиз мени "Термукс кадам сайын" сериясын улантууну кааласаңыз, анда төмөндө сурамжылоо бар жана комментарийлерде дагы эмне жөнүндө жазууну сунуштай аласыз.

Сурамжылоого катталган колдонуучулар гана катыша алышат. Кирүү, өтүнөмүн.

"Термукс кадам сайын" улантылсынбы?

  • ошол

  • жок

2 колдонуучу добуш берди. Калыс калгандар жок.

Source: www.habr.com

Комментарий кошуу