Termux soli pa solim (2. daļa)

В pēdējā daļa iepazināmies ar Termux pamatkomandām, izveidojām SSH savienojumu ar datoru, iemācījāmies izveidot aizstājvārdus un uzstādījām vairākas noderīgas utilītas. Šoreiz mums ir jāiet vēl tālāk, mēs esam ar jums:

  • uzziniet par Termux:API
  • instalējiet Python un nano un uzrakstiet "Sveika, pasaule!" programmā Python
  • uzziniet par bash skriptiem un uzrakstiet skriptu, izmantojot Termux:API
  • izmantojot bash skriptu, Termux:API un Python, mēs uzrakstīsim vienkāršu programmu

Tā kā mēs tagad saprotam, ko dara ievades komandas, tad no nākamā soļa es neaprakstīšu katru darbību tik detalizēti, bet, kur var rasties grūtības, es noteikti paskaidrošu.

Es bieži izmantoju aizstājvārdus, tāpēc šajā daļā izmantotie saīsinājumi ir parādīti šeit:

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

Plāns ir gatavs, varat sākt! Un, protams, neaizmirstiet par "burvju cilni" (Skatīt 1. daļu).

Solis 4

Niršana lejup pa Termux: API Trušu caurums

API cik daudz ir saplūdis šajā vārdā kodētāja sirdij

Ja mēs nepieskaramies tēmai Termux: API, tad visas mūsu darbības varētu tikt reducētas līdz vienkāršas brošūras, piemēram, "Linux for Dummies", pārstāstīšanai, kā pareizi tika atzīmēts pirmās daļas komentāros.

Vispirms instalējiet Termux:API no Google Play tirgus (tas nesāpēs pēc tam restartēt Termux):

Termux soli pa solim (2. daļa)

Tālāk mums ir jāinstalē API pakotne Termux konsolē:

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

Eksperimentēšanai izmantoju operētājsistēmu Android 5.1.1, operētājsistēmas Android 7 īpašniekiem ir nepieciešams “aizsargāt” Termux: API, atverot sadaļu “Iestatījumi” > “Aizsargātās lietotnes”, pretējā gadījumā API izsaukumi, piemēram, termux-battery-status, pakārsies. (Cm. projekta wiki)

Tagad ir vērts tuvāk aplūkot iegūtās iespējas. Jaunāko un detalizētāko Termux:API aprakstu var atrast vietnē projekta wiki. Centīšos izvēlēties vizuālāko un interesantāko, kas turpmāk ļaus pielikt roku patstāvīgam darbam.

Daži Termux:API piemēri

  • termux-akumulatora statuss
    Atgriež akumulatora stāvokli
    Termux soli pa solim (2. daļa)
  • termux-spilgtums
    Iestata ekrāna spilgtumu no 0 līdz 255
    Termux soli pa solim (2. daļa)
  • termux-grauzdiņš
    Rāda pagaidu tostu paziņojumu
    Termux soli pa solim (2. daļa)
  • termux lāpa
    Iekļauts lukturītis
    Termux soli pa solim (2. daļa)
  • termux-wifi-scaninfo
    Atgriež informāciju par pēdējo Wi-Fi tīklu skenēšanu
    Termux soli pa solim (2. daļa)

Ir viegli saprast, ka atgriešanas vērtības ir virknes, vārdnīcas, vārdnīcu saraksti, kopumā datu tipi, ar kuriem Python lieliski darbojas, tāpēc nākamais solis ir to iestatīšana.

Solis 5

Instalējiet Python un nano

Lai instalētu Python, terminālī ierakstiet:

updg
apt install python
apt install python2

Tagad mums ir instalēts 2 un 3 Python.

Strādājot pie raksta, es atklāju citu nano teksta redaktoru, kas man patika vairāk nekā vim, instalēsim to:

apt install nano

To ir vieglāk lietot nekā vim, un nano ir lietotājam draudzīgāks interfeiss. Android ierīcē vim joprojām ir ērtāks.

HelloWorld programmā Python vietnē Termux

Pa lielam bez šī posteņa varēja iztikt, bet Python likt Termuxā un nerakstīt HelloWorld, manuprāt, ir sliktas manieres.

Man nav mērķis nevienam mācīt Python, tāpēc tie, kas nezina, var vienkārši nokopēt kodu (vai sākt mācīties paši, jo ir pietiekami daudz literatūras), un tie, kas zina, var kaut ko izgatavot paši. Un es "aizsegā" joprojām parādīšu veidu, kā terminālī ievadīt tekstu bez redaktora.

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 soli pa solim (2. daļa)

Ja ievades procesa laikā nepamanījāt kļūdu un jau nospiedāt taustiņu Enter, tad nevarēsit pāriet uz augšējo rindiņu, lai to izdarītu, pabeidziet ievadi, nospiežot Ctrl + D (parasti varat pārtraukt Ctrl + Z) un atkārtojiet visu no sākuma. Tā kā mēs izmantojām “>”, fails tiks pilnībā pārrakstīts. Šī iemesla dēļ es neiesaku izmantot šo ievades metodi, ja vien neesat pārliecināts, ka kodu ierakstīsit nekavējoties bez kļūdām.

Solis 6

Bash skripti

Bash skripti ir lielisks veids, kā automatizēt termināļa darbu. Skripts ir fails ar paplašinājumu .sh (paplašinājums nav obligāts), kas satur termināļa komandu kopu, dažas no kurām mēs jau esam izpētījuši. Šeit vairuma komandu saraksts, visam vajadzētu darboties, taču ņemiet vērā, ka šis ir saraksts "pieaugušajiem" Linux, nevis Termux, bet tikai lielisks materiāls par bash skriptiem.

Ar skriptu palīdzību jūs varat automatizēt gandrīz visas monotonās darbības. Uzrakstīsim vienkāršāko bash skriptu, kas parāda vērtību no viņa izveidotā mainīgā, es atkal izmantošu cat, jūs varat izmantot parasto teksta redaktoru, un tie, kas īpaši vēlas sevi apmācīt, var izmantot 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 soli pa solim (2. daļa)

Bash skripts ar Termux:API

Rakstīsim kaut ko atšķirīgu no bēdīgi slavenajiem HelloWorlds, bet tikpat bezjēdzīgi. Mūsu skripts būs:

  1. izpildīt termux-battery-status API pieprasījumu
  2. saglabāt saņemtos datus failā test.txt
  3. drukāt datus no faila uz ekrānu
  4. izpildiet iepriekš uzrakstīto hello-world.py programmu
  5. ierakstiet no programmas saņemtos datus failā test.txt
  6. drukāt datus no faila uz ekrānu
  7. pārvietot datus no faila uz starpliktuvi
  8. parādīt starpliktuves saturu
  9. parādīt uznirstošo ziņojumu ar datiem no starpliktuves

Vispirms izveidojiet mapi darbam un kopējiet hello-world.py tur kā test.py, izveidojiet test.sh un test.txt failus šajā mapē:

mkdir bashscript

cat hello-world.py >> bashscript/test.py

cd bashscript/

touch test.sh test.txt # touch создает файлы

chmod +x test.sh

Tagad jebkurā ērtā veidā ierakstiet skriptu failā 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

Tagad, atrodoties bashscript mapē, mēs rakstām ./test.sh mēs novērojam Android ierīces terminālī:

Termux soli pa solim (2. daļa)

Tāpēc mēs uzrakstījām plānoto bash skriptu. Varat to atšķaidīt ar izvadi uz konsoles informāciju par katras darbības izpildi (izmantojot atbalsi), es to atstāšu lasītājiem.

Solis 7

Darīsim ko noderīgu

Salīdzinoši noderīgi

Formulēsim darba uzdevumu
Pēc palaišanas lietojumprogrammai starpliktuvē jāievieto nejauša rindiņa no faila un jāpaziņo par to ar uznirstošo ziņojumu.

Par pamatu ņemsim bash skriptu, no faila izvilksim nejaušu rindiņu, izmantojot Python apakšprogrammu. Izveidosim skripta darba plānu:

  1. Palaist apakšprogrammu
  2. Pārsūtiet apakšprogrammas rezultātu uz starpliktuvi
  3. Parādīt uznirstošo ziņojumu

Definēsim direktoriju un lietojumprogrammu failu nosaukumus:

  • rndstr mapē mājas direktorijā
    • avots - fails, no kura mēs ņemsim rindas
    • rndstr.py - apakšprogramma, kas parāda nejaušu rindu no avota faila uz konsoli
    • rndstr.sh - skripta fails

Izveidojiet lietojumprogrammu direktoriju un pārejiet uz to un izveidojiet tajā failus.

Pirmos divus skripta plāna punktus var apvienot ar konveijera palīdzību, kā rezultātā, izmantojot Termux: API, mēs iegūstam:

#!/bin/bash

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

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

Avota failā varat ievietot jebkuru tekstu, kas loģiski sadalīts rindās, es nolēmu ievietot aforismus:

Avota failu saraksts

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

Mums vienkārši jāizveido apakšprogramma, kas no avota faila iegūst nejaušu virkni.
Uzrakstīsim apakšprogrammas algoritmu:

  1. Atvērtā avota fails
  2. Atvērtā faila rindu skaita skaitīšana
  3. Aizveriet failu (nav nekā, kas to paturētu atvērtu papildu laiku)
  4. Mēs ģenerējam nejaušu veselu skaitli avota faila rindu skaitā
  5. Atvērtā avota fails
  6. Mēs izvadām rindu zem ģenerētā skaitļa numura
  7. Faila aizvēršana

Mēs ieviešam algoritmu Python (es rakstu saskaņā ar 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  #  закрываем файл

Kad faili ir izveidoti un uzrakstīti, jums ir jāpiešķir faila izpildes atļaujas rndstr.shun izveidojiet aizstājvārdu ātrai palaišanai.

alias rnst="~/rndstr/rndstr.sh"

Tagad ierakstiet terminālī rnst starpliktuvē iegūsim nejaušu aforismu, ko, piemēram, var izmantot sarakstē.

Šeit mēs esam uzrakstījuši vismaz kaut ko noderīgu. Salīdzinoši noderīgi.

Ps

Pēdējā darbībā es apzināti nesniedzu ekrānuzņēmumus un detalizēti neanalizēju dažas darbības, ierakstot tikai failu saturu, lai lasītājiem būtu iespēja strādāt pašiem.

Par šo "Termux soli pa solim", manuprāt, ir vērts pabeigt. Protams, tie ir tikai paši pirmie soļi, bet tagad tu vari virzīties uz priekšu pats.

Sākotnēji plānoju šajā ciklā parādīt, kā lietot nmap, sqlmap, bet bez manis jau ir daudz rakstu par šo tēmu. Ja vēlies, lai turpinu “Termux soli pa solim” ciklu, tad zemāk ir aptauja un komentāros vari ieteikt par ko vēl rakstīt.

Aptaujā var piedalīties tikai reģistrēti lietotāji. Ielogoties, lūdzu.

Turpināt "Termux soli pa solim"?

Balsoja 2 lietotāji. Nav neviena atturas.

Avots: www.habr.com

Pievieno komentāru