Termux žingsnis po žingsnio (2 dalis)

В paskutinė dalis Susipažinome su pagrindinėmis Termux komandomis, sukonfigūravome SSH ryšį su kompiuteriu, išmokome kurti slapyvardžius ir įdiegėme keletą naudingų paslaugų. Šį kartą turime žengti dar toliau, mes su jumis:

  • sužinokite apie Termux:API
  • įdiekite Python ir nano ir parašykite "Labas, pasauli!" Python
  • sužinokite apie bash scenarijus ir parašykite scenarijų naudodami Termux:API
  • naudodami bash scenarijų, Termux:API ir Python parašysime paprastą programą

Kadangi dabar suprantame, ką daro įvesties komandos, tai nuo kito žingsnio taip detaliai neaprašysiu kiekvieno veiksmo, bet kur gali kilti sunkumų, tikrai paaiškinsiu.

Aš dažnai naudoju slapyvardžius, todėl šioje dalyje naudojami sutrumpinimai rodomi čia:

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

Planas paruoštas, galite pradėti! Ir, žinoma, nepamirškite apie „stebuklingą skirtuką“ (Žr. 1 dalį).

Žingsnis 4

Nardymas žemyn Termux: API Triušio skylė

API kiek susiliejo šiame žodyje koduotojo širdžiai

Jei neliesime temos Termux: API, tai visi mūsų žingsniai gali apsiriboti paprasčiausiu kokios nors brošiūros, pavyzdžiui, „Linux for Dummies“, perpasakojimu, kaip buvo teisingai pažymėta pirmosios dalies komentaruose.

Pirmiausia įdiekite Termux:API iš „Google Play“ rinkos (po to nepakenks iš naujo paleisti Termux):

Termux žingsnis po žingsnio (2 dalis)

Tada turime įdiegti API paketą Termux konsolėje:

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

Eksperimentams naudoju Android 5.1.1, Android 7 savininkai turi "apsaugoti" Termux: API, eidami į "Nustatymai" > "Apsaugotos programos", kitu atveju API skambučiai, pvz. termux-battery-status, pakabins. (Cm. projekto wiki)

Dabar verta atidžiau pažvelgti į įgytas galimybes. Naujausią ir išsamiausią Termux:API aprašymą rasite adresu projekto wiki. Stengsiuosi išsirinkti vizualiausią ir įdomiausią, kas ateityje leis numoti ranka į savarankišką darbą.

Kai kurie Termux:API pavyzdžiai

  • termux-baterijos būsena
    Grąžina akumuliatoriaus būseną
    Termux žingsnis po žingsnio (2 dalis)
  • termux-ryškumas
    Nustato ekrano ryškumą nuo 0 iki 255
    Termux žingsnis po žingsnio (2 dalis)
  • termux-skrudinta duona
    Rodomas laikinas skrebučio pranešimas
    Termux žingsnis po žingsnio (2 dalis)
  • termux žibintuvėlis
    Apima žibintuvėlį
    Termux žingsnis po žingsnio (2 dalis)
  • termux-wifi-scaninfo
    Pateikia informaciją apie paskutinį „Wi-Fi“ tinklų nuskaitymą
    Termux žingsnis po žingsnio (2 dalis)

Nesunku pastebėti, kad grąžinamos reikšmės yra eilutės, žodynai, žodynų sąrašai, apskritai duomenų tipai, su kuriais „Python“ puikiai veikia, todėl kitas žingsnis yra jį nustatyti.

Žingsnis 5

Įdiekite Python ir nano

Norėdami įdiegti Python, terminale parašykite:

updg
apt install python
apt install python2

Dabar turime įdiegę 2 ir 3 Python.

Dirbdamas su straipsniu atradau kitą nano teksto rengyklę, kuri man patiko labiau nei vim, įdiekime ją:

apt install nano

Ją naudoti lengviau nei vim, o nano sąsaja yra patogesnė. „Android“ įrenginyje „vim“ vis dar yra patogesnis.

HelloWorld Python, Termux

Apskritai, buvo galima apsieiti ir be šio elemento, bet įdėti Python į Termux ir neparašyti HelloWorld, mano nuomone, yra bloga maniera.

Nekeliu sau tikslo ką nors mokyti Python, todėl nežinantys gali tiesiog nukopijuoti kodą (arba pradėti mokytis savarankiškai, nes literatūros užtenka), o žinantys gali ką nors pasidaryti patys. O aš „padanga“ dar parodysiu būdą, kaip įvesti tekstą terminale be redaktoriaus.

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 žingsnis po žingsnio (2 dalis)

Jei įvedimo proceso metu nepastebėjote klaidos ir jau paspaudėte Enter, tada negalėsite eiti į aukščiau esančią eilutę, kad tai padarytumėte, įvedimą užbaikite paspausdami Ctrl + D (paprastai galite pertraukti Ctrl + Z) ir pakartokite viską nuo pradžių. Kadangi naudojome „>“, failas bus visiškai perrašytas. Dėl šios priežasties nerekomenduoju naudoti šio įvesties būdo, nebent esate tikri, kad kodą parašysite iš karto be klaidų.

Žingsnis 6

Bash scenarijus

Bash scenarijai yra puikus būdas automatizuoti terminalo darbą. Scenarijus yra failas su plėtiniu .sh (plėtinys neprivalomas), kuriame yra terminalo komandų rinkinys, kai kurias iš jų jau ištyrėme. Čia daugumos komandų sąrašas, viskas turėtų veikti, tačiau atkreipkite dėmesį, kad tai yra „suaugusiųjų“ Linux sąrašas, o ne „Terux“, o tiesiog puiki medžiaga apie bash scenarijus.

Scenarijų pagalba galite automatizuoti beveik visus monotoniškus veiksmus. Parašykime paprasčiausią bash scenarijų, kuris rodo reikšmę iš jo sukurto kintamojo, aš vėl naudosiu cat, galite naudoti įprastą teksto rengyklę, o tie, kurie ypač nori treniruotis, gali naudoti 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 žingsnis po žingsnio (2 dalis)

Bash scenarijus su Termux:API

Parašykime ką nors kitokio nei liūdnai pagarsėjusio HelloWorlds, bet taip pat nenaudinga. Mūsų scenarijus bus toks:

  1. vykdyti termux-battery-status API užklausą
  2. gautus duomenis išsaugokite faile test.txt
  3. spausdinti duomenis iš failo į ekraną
  4. paleiskite anksčiau parašytą hello-world.py programą
  5. įrašyti iš programos gautus duomenis į failą test.txt
  6. spausdinti duomenis iš failo į ekraną
  7. perkelti duomenis iš failo į mainų sritį
  8. rodyti iškarpinės turinį
  9. rodyti iššokantįjį pranešimą su duomenimis iš mainų srities

Pirmiausia sukurkite darbo aplanką ir nukopijuokite hello-world.py kaip test.py, šiame aplanke sukurkite test.sh ir test.txt failus:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Dabar bet kokiu patogiu būdu parašykite scenarijų į test.sh failą:

#!/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

Dabar, būdami bashscript aplanke, rašome ./test.sh „Android“ įrenginio terminale stebime:

Termux žingsnis po žingsnio (2 dalis)

Taigi mes parašėme suplanuotą bash scenarijų. Galite jį atskiesti su išvestimi į informacijos apie kiekvieno veiksmo vykdymą konsolę (naudodami aidą), paliksiu tai skaitytojams.

Žingsnis 7

Padarykime ką nors naudingo

Santykinai naudinga

Suformuluokime užduoties sąlygas
Po paleidimo programa turėtų įdėti atsitiktinę eilutę iš failo į mainų sritį ir apie tai pranešti iššokančiu pranešimu.

Kaip pagrindą paimsime bash scenarijų, iš failo ištrauksime atsitiktinę eilutę naudodami Python paprogramę. Padarykime scenarijaus darbo planą:

  1. Vykdykite paprogramę
  2. Perkelkite paprogramės rezultatą į mainų sritį
  3. Rodyti iššokantį pranešimą

Apibrėžkime katalogų ir programų failų pavadinimus:

  • rndstr aplanką namų kataloge
    • šaltinis – failas, iš kurio paimsime eilutes
    • rndstr.py – paprogramė, kuri rodo atsitiktinę eilutę iš šaltinio failo į konsolę
    • rndstr.sh – scenarijaus failas

Sukurkite programų katalogą, pereikite prie jo ir kurkite failus.

Pirmieji du scenarijaus plano taškai gali būti sujungti dujotiekiu, todėl naudojant Termux: API gauname:

#!/bin/bash

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

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

Šaltinio faile galite įdėti bet kokį tekstą, logiškai suskirstytą į eilutes, aš nusprendžiau įdėti aforizmus:

Šaltinio failų sąrašas

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

Mums tereikia sukurti paprogramę, kuri iš šaltinio failo ištraukia atsitiktinę eilutę.
Parašykime paprogramės algoritmą:

  1. Atvirojo kodo failas
  2. Atviro failo eilučių skaičiaus skaičiavimas
  3. Uždarykite failą (nėra ko, kad jis būtų atidarytas papildomam laikui)
  4. Sugeneruojame atsitiktinį sveikąjį skaičių šaltinio failo eilučių skaičiuje
  5. Atvirojo kodo failas
  6. Išvedame eilutę po sugeneruoto skaičiaus numeriu
  7. Failo uždarymas

Algoritmą įgyvendiname Python (rašau pagal 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  #  закрываем файл

Sukūrę ir parašę failus, turite suteikti failo vykdymo leidimus rndstr.shir sukurkite slapyvardį, kad galėtumėte greitai paleisti.

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

Dabar įveskite terminalą rnst iškarpinėje gausime atsitiktinį aforizmą, kurį, pavyzdžiui, galima panaudoti susirašinėjant.

Čia bent ką naudingo parašėme. Santykinai naudinga.

PS

Paskutiniame žingsnyje tyčia nepateikiau ekrano kopijų ir detaliai neanalizavau kai kurių veiksmų, parašydamas tik failų turinį, kad skaitytojai turėtų galimybę dirbti patys.

Šį „Termux žingsnis po žingsnio“, manau, verta užbaigti. Žinoma, tai tik patys pirmieji žingsniai, bet dabar galite judėti į priekį patys.

Iš pradžių planavau šiame cikle parodyti kaip naudotis nmap, sqlmap, bet be manęs jau yra daug straipsnių šia tema. Jei norite, kad tęsčiau "Termux žingsnis po žingsnio" ciklą, tada žemiau yra apklausa ir komentaruose galite pasiūlyti apie ką dar parašyti.

Apklausoje gali dalyvauti tik registruoti vartotojai. Prisijungti, Prašau.

Tęsti „Termux žingsnis po žingsnio“?

  • Taip

  • Ne

Balsavo 2 vartotojai. Susilaikiusiųjų nėra.

Šaltinis: www.habr.com

Добавить комментарий