Термукс зина ба зина (Қисми 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 Хоул харгӯш

API чӣ қадар дар ин калима барои дили кодер муттаҳид шудааст

Агар мо ба мавзӯи Termux: API дахл накунем, он гоҳ ҳама қадамҳои моро метавон ба такрори оддии баъзе брошюраҳо ба монанди "Linux for Dummies" кам кард, тавре ки дар шарҳҳои қисми аввал дуруст қайд карда шудааст.

Аввалан, Termux:API-ро аз Google Play Market насб кунед (баъдан аз нав оғоз кардани 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

Мо ҳоло 2 ва 3 Python насб кардаем.

Ҳангоми кор дар мақола, ман як муҳаррири матнии наноеро кашф кардам, ки ба ман бештар аз vim маъқул буд, биёед онро насб кунем:

apt install nano

Истифодаи он нисбат ба vim осонтар аст ва нано интерфейси барои корбарро осонтар дорад. Дар дастгоҳи 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)

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

Термукс зина ба зина (Қисми 2)

Скрипти Bash бо Termux: API

Биёед чизи дигареро аз HelloWorlds-и маъруф нависем, аммо ҳамон қадар бефоида. Скрипти мо чунин хоҳад буд:

  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 мушоҳида мекунем:

Термукс зина ба зина (Қисми 2)

Ҳамин тавр, мо скрипти банақшагирифташударо навиштем. Шумо метавонед онро бо баромади консол маълумот дар бораи иҷрои ҳар як амал (бо истифода аз echo) ҳал кунед, ман инро барои хонандагон мегузорам.

қадам 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 корбар овоз доданд. Ягон бетараф нест.

Манбаъ: will.com

Илова Эзоҳ