Termux стъпка по стъпка (част 2)

В последна част Запознахме се с основните команди на Termux, настроихме SSH връзка към компютър, научихме как да създаваме псевдоними и инсталирахме няколко полезни помощни програми. Този път трябва да отидем още по-далеч, ние сме с вас:

  • научете за Termux:API
  • инсталирайте Python и nano и напишете "Hello, world!" в Python
  • научете за bash скриптовете и напишете скрипт с помощта на Termux:API
  • използвайки bash скрипт, Termux:API и Python ще напишем проста програма

Тъй като вече разбираме какво правят командите за въвеждане, тогава от следващата стъпка няма да опиша всяко действие толкова подробно, но там, където може да има трудности, определено ще обясня.

Използвам много псевдоними, така че съкращенията, използвани в тази част, са показани тук:

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

Планът е готов, можете да започнете! И разбира се, не забравяйте за "магическия раздел" (Вижте част 1).

Стъпка 4

Гмуркане в Termux:API Rabbit Hole

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, като отидат на „Настройки“ > „Защитени приложения“, в противен случай API извиквания като termux-battery-status, ще виси. (См. wiki на проекта)

Сега си струва да разгледаме по-отблизо придобитите възможности. Най-новото и най-подробно описание на Termux:API може да бъде намерено на wiki на проекта. Ще се опитам да избера най-визуалното и интересно, което ще ми позволи да напълня ръката си за самостоятелна работа в бъдеще.

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

  • termux-състояние на батерията
    Връща състоянието на батерията
    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

Сега имаме инсталирани 2 и 3 Python.

Докато работех по статията, открих друг нано текстов редактор, който ми хареса повече от 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 это alias от python)

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

Termux стъпка по стъпка (част 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:

Termux стъпка по стъпка (част 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

В последната стъпка умишлено не предоставих екранни снимки и не анализирах подробно някои от действията, като написах само съдържанието на файловете, така че читателите да имат възможност да работят сами.

На този "Termux стъпка по стъпка", мисля, че си струва да завършите. Разбира се, това са само първите стъпки, но сега можете сами да продължите напред.

Първоначално планирах да покажа в този цикъл как да използвам nmap, sqlmap, но без мен вече има много статии по тази тема. Ако искате да продължа цикъла „Termux стъпка по стъпка“, тогава има анкета по-долу и в коментарите можете да предложите за какво друго да пишете.

В анкетата могат да участват само регистрирани потребители. Впиши се, Моля те.

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

  • Да

  • Не

2 потребители гласуваха. Няма въздържали се.

Източник: www.habr.com

Добавяне на нов коментар