Termux samm-sammult (2. osa)

В viimane osa tutvusime Termuxi põhikäskudega, loosime SSH-ühenduse arvutiga, õppisime aliase loomist ja installisime mitmeid kasulikke utiliite. Seekord peame astuma veelgi kaugemale, oleme teiega:

  • Lisateavet Termux:API kohta
  • installige Python ja nano ning kirjutage "Tere, maailm!" Pythonis
  • õppida tundma bash-skripte ja kirjutada skript Termux:API abil
  • kasutades bash-skripti, Termux:API ja Python, kirjutame lihtsa programmi

Kuna nüüd saame aru, mida sisendkäsud teevad, siis järgmisest sammust ma iga tegevust nii detailselt ei kirjelda, aga kus võib raskusi tekkida, siis kindlasti selgitan.

Kasutan palju varjunimesid, seega on siin näidatud selles osas kasutatud lühendid:

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

Plaan on valmis, võite alustada! Ja muidugi ärge unustage "maagilist vahekaarti" (Vaata 1. osa).

Samm 4

Termuxist alla sukeldumine: API Rabbit Hole

API kui palju on sellesse sõna kodeerija südame jaoks kokku sulanud

Kui me ei puuduta Termux: API teemat, siis võiks kõik meie sammud taandada mõne brošüüri nagu "Linux for Dummies" lihtsaks ümberjutustamiseks, nagu esimese osa kommentaarides õigesti märgiti.

Esmalt installige Google Play turult Termux:API (hiljem pole valus Termuxi taaskäivitamine):

Termux samm-sammult (2. osa)

Järgmisena peame installima API paketi Termuxi konsooli:

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

Katsetamiseks kasutan Android 5.1.1, Android 7 omanikud peavad Termux: API-d "kaitstama", valides "Seaded" > "Kaitstud rakendused", muidu API-kutsed nagu termux-battery-status, ripub. (cm. projekti wiki)

Nüüd tasub omandatud võimalustega lähemalt tutvuda. Termux:API uusima ja üksikasjalikuma kirjelduse leiate aadressilt projekti wiki. Püüan valida kõige visuaalsema ja huvitavama, mis võimaldab mul tulevikus iseseisvaks tööks kätt täita.

Mõned Termux:API näited

  • termux-battery-status
    Tagastab aku oleku
    Termux samm-sammult (2. osa)
  • termux-heledus
    Määrab ekraani heleduse vahemikus 0 kuni 255
    Termux samm-sammult (2. osa)
  • termux-röstsai
    Kuvab ajutise röstsaiateatise
    Termux samm-sammult (2. osa)
  • termux-tõrvik
    Kaasas taskulamp
    Termux samm-sammult (2. osa)
  • termux-wifi-scaninfo
    Tagastab teabe Wi-Fi-võrkude viimase skannimise kohta
    Termux samm-sammult (2. osa)

Lihtne on näha, et tagastusväärtused on stringid, sõnastikud, sõnaraamatute loendid, üldiselt andmetüübid, millega Python töötab suurepäraselt, nii et järgmine samm on selle seadistamine.

Samm 5

Installige Python ja nano

Pythoni installimiseks kirjutage terminali:

updg
apt install python
apt install python2

Meil on nüüd installitud Python 2 ja 3.

Artikli kallal töötades avastasin veel ühe nano-tekstiredaktori, mis meeldis mulle rohkem kui vim, installime selle:

apt install nano

Seda on lihtsam kasutada kui vim ja nanol on kasutajasõbralikum liides. Android-seadmes on vim siiski mugavam.

HelloWorld Pythonis Termuxis

Suures plaanis sai ka ilma selle elemendita hakkama, aga Pythoni panemine Termuxisse ja HelloWorldi kirjutamata jätmine on minu meelest halvad kombed.

Minu eesmärk ei ole kellelegi Pythonit õpetada, nii et kes ei tea, võib lihtsalt koodi kopeerida (või hakata iseseisvalt õppima, kuna kirjandust on piisavalt) ja teadjad saavad ise midagi teha. Ja ma näitan "varju all" ikkagi viisi, kuidas ilma redaktorita terminali teksti sisestada.

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 samm-sammult (2. osa)

Kui te ei märganud sisestusprotsessi ajal viga ja vajutasite juba sisestusklahvi, siis ei saa te ülaltoodud reale minna, selleks lõpetage sisestus klahvikombinatsiooniga Ctrl + D (üldiselt saate Ctrl + katkestada Z) ja korrake kõike algusest peale. Kuna kasutasime '>', kirjutatakse fail täielikult üle. Sel põhjusel ei soovita ma seda sisestusmeetodit kasutada, kui pole kindel, et kirjutate koodi kohe ilma vigadeta.

Samm 6

Bashi skriptid

Bash-skriptid on suurepärane viis terminali töö automatiseerimiseks. Skript on fail laiendiga .sh (laiend on valikuline), mis sisaldab terminalikäskude komplekti, millest mõnda oleme juba uurinud. Siin enamiku käskude loend, kõik peaks töötama, kuid pange tähele, et see on "täiskasvanute" Linuxi loend, mitte Termux, vaid lihtsalt suurepärane materjal bash-skriptide kohta.

Skriptide abil saate automatiseerida peaaegu kõik monotoonsed toimingud. Kirjutame kõige lihtsama bash-skripti, mis kuvab tema loodud muutuja väärtust, kasutan uuesti cat, saab kasutada tavalist tekstiredaktorit ja kes eriti tahab ennast treenida, võib kasutada kaja.

cat >test.sh

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

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

# Ctrl + D

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

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

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

Termux samm-sammult (2. osa)

Bash-skript koos Termux:API-ga

Kirjutame midagi erinevat kurikuulsast HelloWorldsist, kuid sama kasutut. Meie skript on järgmine:

  1. täitke termux-battery-status API päring
  2. salvestage saadud andmed faili test.txt
  3. printida andmed failist ekraanile
  4. käivitage varem kirjutatud hello-world.py programm
  5. kirjutage programmist saadud andmed faili test.txt
  6. printida andmed failist ekraanile
  7. teisaldada andmed failist lõikelauale
  8. kuvada lõikepuhvri sisu
  9. kuvab lõikepuhvril olevate andmetega hüpikakna

Esmalt looge töö jaoks kaust ja kopeerige hello-world.py sinna kui test.py, looge selles kaustas failid test.sh ja test.txt:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Nüüd kirjutage skript mis tahes mugaval viisil faili 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

Nüüd, olles bashscripti kaustas, kirjutame ./test.sh jälgime Android-seadme terminalis:

Termux samm-sammult (2. osa)

Nii kirjutasime kavandatud bash-stsenaariumi. Saate seda lahjendada iga toimingu sooritamise teabe konsooli väljundiga (kasutades kaja), jätan selle lugejatele.

Samm 7

Teeme midagi kasulikku

Suhteliselt kasulik

Sõnastame lähteülesande
Pärast käivitamist peaks rakendus asetama failist lõikepuhvrisse juhusliku rea ja teavitama sellest hüpikaknaga.

Võtame aluseks bash-skripti, ekstraheerime Pythoni alamprogrammi abil failist juhusliku rea. Teeme skripti tööplaani:

  1. Käivitage alamprogramm
  2. Kandke alamprogrammi tulemus lõikepuhvrisse
  3. Kuva hüpiksõnum

Määratleme kataloogide ja rakenduste failide nimed:

  • rndstr kaust kodukataloogis
    • allikas - fail, millest võtame read
    • rndstr.py – alamprogramm, mis kuvab juhusliku rea lähtefailist konsooli
    • rndstr.sh – skriptifail

Looge rakenduste kataloog ja liikuge sinna ning looge seal failid.

Skriptiplaani kaks esimest punkti saab torujuhtme abil ühendada, mille tulemusena saame Termux: API abil:

#!/bin/bash

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

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

Lähtefailis saate panna mis tahes teksti loogiliselt ridadeks jagatud, otsustasin panna aforismid:

Lähtefailide loend

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

Peame lihtsalt looma alamprogrammi, mis eraldab lähtefailist juhusliku stringi.
Kirjutame alamprogrammi algoritmi:

  1. Avatud lähtekoodiga fail
  2. Avatud faili ridade loendamine
  3. Sulgege fail (ei ole midagi, mis hoiaks seda lisaajaks avatuna)
  4. Loome lähtefaili ridade arvu piires juhusliku täisarvu
  5. Avatud lähtekoodiga fail
  6. Väljastame genereeritud numbri numbri all oleva rea
  7. Faili sulgemine

Rakendame algoritmi Pythonis (kirjutan Python 3.7 all):

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  #  закрываем файл

Pärast failide loomist ja kirjutamist peate andma failile täitmise õigused rndstr.shja looge kiireks käivitamiseks pseudonüüm.

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

Nüüd tippige terminali rnst saame lõikepuhvrisse juhusliku aforismi, mida saab näiteks kirjavahetuses kasutada.

Siin oleme kirjutanud vähemalt midagi kasulikku. Suhteliselt kasulik.

Ps

Viimases etapis ei andnud ma tahtlikult ekraanipilte ega analüüsinud mõnda toimingut üksikasjalikult, kirjutades ainult failide sisu, et lugejatel oleks võimalus ise töötada.

Selle "Termuxi samm-sammult" puhul arvan, et tasub lõpetada. Loomulikult on need alles kõige esimesed sammud, kuid nüüd saate ise edasi liikuda.

Algselt plaanisin selles tsüklis näidata, kuidas kasutada nmapi, sqlmapi, kuid ilma minuta on sellel teemal juba palju artikleid. Kui soovid, et jätkaksin “Termuxi samm-sammult” tsüklit, siis all on küsitlus ja kommentaarides saad soovitada, millest veel kirjutada.

Küsitluses saavad osaleda ainult registreerunud kasutajad. Logi sissepalun.

Kas jätkata "Termuxi samm-sammult"?

  • Jah

  • ei

2 kasutajat hääletas. Erapooletuid ei ole.

Allikas: www.habr.com

Lisa kommentaar