Termux чекор по чекор (Дел 2)

В последен дел Се запознавме со основните команди на Termux, поставивме SSH врска со компјутер, научивме како да креираме псевдоними и инсталиравме неколку корисни алатки. Овој пат мораме да одиме уште подалеку, со вас сме:

  • дознајте за Termux:API
  • Ајде да инсталираме Python и nano, а исто така да напишеме „Здраво, свет! во Пајтон
  • дознајте за баш скриптите и напишете скрипта користејќи Termux:API
  • Ајде да напишеме едноставна програма користејќи баш скрипта, Termux:API и Python

Бидејќи сега разбираме што прават внесените команди, од следниот чекор нема да ја опишам секоја акција толку детално, но каде што може да има потешкотии, дефинитивно ќе објаснам.

Јас често користам псевдоними, па кратенките користени во овој дел се прикажани овде:

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

Планот е подготвен, можеме да започнеме! И, се разбира, не заборавајте за „магичното јазиче“ (Видете дел 1).

Чекор 4

Нуркање низ Termux:API зајачка дупка

API, колку во овој збор се спои срцето на кодерот

Ако не ја допреме темата Termux:API, тогаш сите наши чекори би можеле да се сведат на едноставно прераскажување на некоја брошура како „Linux for Dummies“, како што со право беше забележано во коментарите на првиот дел.

Прво, ајде да го инсталираме Termux:API од Google Play Market (отпосле нема да штети да го рестартираме Termux):

Termux чекор по чекор (Дел 2)

Следно, треба да го инсталираме пакетот API во конзолата Termux:

updg # Не забываем про alias’ы
apt install termux-api

За експерименти користам Android 5.1.1, за сопствениците на Android 7 треба да го „заштитите“ Termux:API со одење до Settings > Protected Apps, инаку API повикува како termux-battery-status, ќе замрзне. (Цм. проект вики)

Сега е време да се погледне одблизу на стекнатите способности. Најновиот и детален опис на Termux:API може да се најде на проект вики. Ќе се обидам да го изберам највизуелното и најинтересното, што ќе ми овозможи да се подобрам во самостојната работа во иднина.

Некои примери на Termux:API

  • termux-battery-status
    Го враќа статусот на батеријата
    Termux чекор по чекор (Дел 2)
  • termux-осветленост
    Ја поставува осветленоста на екранот од 0 до 255
    Termux чекор по чекор (Дел 2)
  • termux-тост
    Прикажува привремено скокачко известување
    Termux чекор по чекор (Дел 2)
  • termux-факел
    Вклучува фенерче
    Termux чекор по чекор (Дел 2)
  • termux-wifi-scaninfo
    Враќа информации за последното скенирање на Wi-Fi мрежи
    Termux чекор по чекор (Дел 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 е сè уште поудобен.

HelloWorld во Python во Termux

Во голема мера, беше можно да се направи без оваа точка, но инсталирањето на Python во Termux и непишувањето HelloWorld, според мое мислење, е лоши манири.

Мојата цел не е да учам никого Пајтон, па оние што не знаат можат едноставно да го копираат кодот (или да почнат да учат сами, за среќа има доволно литература), а оние што знаат можат сами да извајаат нешто. И на тивко, ќе ви покажам и начин да внесете текст во терминалот без уредувач.

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)

Termux чекор по чекор (Дел 2)

Ако за време на процесот на внесување не сте забележале грешка и веќе сте притиснале Enter, тогаш нема да можете да отидете на линијата погоре; за да го направите ова, завршете го внесувањето со притискање на Ctrl + D (можете дури и да го прекинете Ctrl + Z) и повторете сè од почеток. Бидејќи користевме '>' датотеката ќе биде целосно препишана. Поради оваа причина, не препорачувам да го користите овој метод за внесување, освен ако не сте сигурни дека веднаш ќе го напишете кодот без грешки.

Чекор 6

Баш скрипти

Bash скриптите се одличен начин за автоматизирање на вашата терминална работа. Скриптата е датотека со наставката .sh (наставката е опционална) која содржи множество терминални команди, од кои некои веќе ги проучувавме. Еве листа на повеќето команди, сè треба да работи, но имајте предвид дека ова е список за „возрасни“ Linux, а не за Termux, туку само Одлични работи за баш скрипти.

Користејќи скрипти, можете да ги автоматизирате скоро сите монотони дејства. Ајде да напишеме едноставна баш скрипта што ја дава вредноста од променливата што ја создала, јас повторно ќе користам cat, можете да користите нормален уредувач на текст, а оние кои особено сакаат да се обучуваат можат да користат ехо.

cat >test.sh

export str="Привет, Хабр!"
# export создает переменную str
# и присваивает ей значение "Привет, Хабр!"
# Не ставьте пробелы до и после ‘=’

echo $str # Для обращения к переменным перед ними ставится ‘$’

# Ctrl + D

# ./test.sh для запуска скрипта, но если это сделать сейчас то будет ошибка
# для избавления от ошибки нужно сделать файл test.sh исполняемым

chmod +x test.sh
# chmod изменяет права доступа (+ добавить / - убрать)
# ‘+x’ означает что мы делаем файл исполняемым

./test.sh # Запускаем выполнение нашего скрипта

Termux чекор по чекор (Дел 2)

Bash скрипта со Termux:API

Ајде да напишеме нешто поразлично од озлогласениот HelloWorlds, но исто толку бескорисно. Нашето сценарио ќе биде:

  1. изведете барање за 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:

Termux чекор по чекор (Дел 2)

Така ја напишавме планираната баш скрипта. Можете да го разредите со испраќање информации за извршувањето на секое дејство на конзолата (со користење на ехо), ова ќе го оставам за читателите.

Чекор 7

Ајде да направиме нешто корисно

Релативно корисно

Ајде да ги формулираме условите за работа
По стартувањето, апликацијата треба да постави случаен ред од датотека на таблата со исечоци и да извести за тоа со скокачка порака.

Ајде да земеме баш скрипта како основа и да извлечеме случајна линија од датотека користејќи потпрограма на 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, но дури и без мене веќе има многу статии на оваа тема. Доколку сакате да ја продолжам серијата „Термукс чекор по чекор“, тогаш подолу има анкета и во коментар можете да предложите за што друго да пишувате.

Само регистрирани корисници можат да учествуваат во анкетата. Најави се, вие сте добредојдени.

Продолжете со „Termux чекор по чекор“?

  • Да

  • Не

Гласаа 2 корисници. Нема воздржани.

Извор: www.habr.com

Додадете коментар