Termux lépésről lépésre (2. rész)

В utolsó rész Megismerkedtünk a Termux alapvető parancsaival, SSH kapcsolatot létesítettünk egy PC-vel, megtanultuk az álnevek létrehozását és számos hasznos segédprogramot telepítettünk. Ezúttal még tovább kell lépnünk, veletek vagyunk:

  • Ismerje meg a Termux:API-t
  • telepítse a Python-t és a nano-t, és írja be a "Hello, world!" Pythonban
  • ismerkedjen meg a bash szkriptekkel, és írjon egy szkriptet a Termux:API használatával
  • egy bash szkript, Termux:API és Python segítségével írunk egy egyszerű programot

Mivel most már értjük, mit csinálnak a beviteli parancsok, ezért a következő lépéstől kezdve nem írok le ilyen részletesen minden egyes műveletet, de ahol nehézségek adódhatnak, azt mindenképpen elmagyarázom.

Sokat használok álneveket, ezért az ebben a részben használt rövidítések itt láthatók:

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

Kész a terv, indulhat! És természetesen ne feledkezzünk meg a "varázslapról" (Lásd az 1. részt).

Lépés 4

Merülés lefelé a Termuxon: API Rabbit Hole

API mennyit egyesült ebben a szóban a kódoló szívére

Ha nem érintjük a Termux: API témáját, akkor minden lépésünket le lehetne redukálni néhány brosúra egyszerű újramondására, mint például a "Linux for Dummies", amint azt az első részhez fűzött megjegyzésekben helyesen megjegyeztük.

Először telepítse a Termux:API-t a Google Play Marketről (utólag nem árt újraindítani a Termuxot):

Termux lépésről lépésre (2. rész)

Ezután telepítenünk kell az API-csomagot a Termux konzolon:

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

Kísérletezéshez Android 5.1.1-et használok, Android 7 tulajdonosoknak meg kell "védeniük" a Termux: API-t a "Beállítások" > "Védett alkalmazások" menüpontban, ellenkező esetben az API-hívások, mint pl. termux-battery-status, lógni fog. (Cm. projekt wiki)

Most érdemes alaposabban szemügyre venni a megszerzett lehetőségeket. A Termux:API legújabb és legrészletesebb leírása a címen található projekt wiki. Igyekszem a leglátványosabbat és legérdekesebbet kiválasztani, ami lehetővé teszi, hogy a jövőben megtegyem a kezemet az önálló munkára.

Néhány Termux:API példa

  • termux-battery-status
    Visszaadja az akkumulátor állapotát
    Termux lépésről lépésre (2. rész)
  • termux-fényerő
    A képernyő fényerejét 0 és 255 között állítja be
    Termux lépésről lépésre (2. rész)
  • termux-pirítós
    Ideiglenes pohárköszöntőt jelenít meg
    Termux lépésről lépésre (2. rész)
  • termux-fáklya
    Zseblámpát tartalmaz
    Termux lépésről lépésre (2. rész)
  • termux-wifi-scaninfo
    Információkat ad vissza a Wi-Fi hálózatok legutóbbi vizsgálatáról
    Termux lépésről lépésre (2. rész)

Könnyen belátható, hogy a visszatérési értékek karakterláncok, szótárak, szótárak listái, általában olyan adattípusok, amelyekkel a Python remekül működik, ezért a következő lépés a beállítás.

Lépés 5

Telepítse a Python-t és a nano-t

A Python telepítéséhez írja be a terminálba:

updg
apt install python
apt install python2

Most már telepítve van a 2 és 3 Python.

A cikken dolgozva felfedeztem egy másik nano szövegszerkesztőt, ami jobban tetszett, mint a vim, telepítsük fel:

apt install nano

Használata egyszerűbb, mint a vim, és a nano felhasználóbarátabb felülettel rendelkezik. Android-eszközön a vim még mindig kényelmesebb.

HelloWorld Pythonban a Termuxnál

Általánosságban elmondható, hogy ezt az elemet nélkülözni lehetett, de a Python-t berakni Termuxba és nem írni a HelloWorld-et szerintem rossz modor.

Nem tűztem ki magamnak azt a célt, hogy Python-t tanítsak senkinek, így aki nem ismeri, az egyszerűen lemásolhatja a kódot (vagy elkezdhet önállóan tanulni, hiszen van elég szakirodalom), aki pedig ismeri, az maga is készíthet valamit. És "álarc alatt" továbbra is megmutatom, hogyan lehet szöveget bevinni a terminálba szerkesztő nélkül.

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 lépésről lépésre (2. rész)

Ha nem vett észre hibát a beviteli folyamat során, és már megnyomta az Entert, akkor nem tud a fenti sorra lépni, ehhez fejezze be a bevitelt a Ctrl + D megnyomásával (általában megszakíthatja a Ctrl + Z) és ismételje meg mindent az elejétől. Mivel a '>'-t használtuk, a fájl teljesen felül lesz írva. Emiatt nem javaslom ennek a beviteli módnak a használatát, hacsak nem biztos abban, hogy azonnal hibamentesen írja meg a kódot.

Lépés 6

Bash szkriptek

A Bash-szkriptek nagyszerű lehetőséget nyújtanak a terminálmunka automatizálására. A szkript egy .sh kiterjesztésű fájl (a kiterjesztés nem kötelező), amely terminálparancsokat tartalmaz, amelyek közül néhányat már tanulmányoztunk. Itt a legtöbb parancs listája, mindennek működnie kell, de vegye figyelembe, hogy ez egy lista "felnőtt" Linuxhoz, nem Termuxhoz, hanem csak nagyszerű anyag a bash scriptekről.

A szkriptek segítségével szinte minden monoton művelet automatizálható. Írjuk meg a legegyszerűbb bash szkriptet, ami az általa létrehozott változóból jeleníti meg az értéket, én megint cat-et használok, használhatsz normál szövegszerkesztőt, aki pedig különösen edzeni akarja magát, az echo-t.

cat >test.sh

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

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

# Ctrl + D

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

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

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

Termux lépésről lépésre (2. rész)

Bash szkript a Termux:API-val

Írjunk valami mást, mint a hírhedt HelloWorlds, de ugyanolyan haszontalan. A forgatókönyvünk a következő lesz:

  1. hajtsa végre a termux-battery-status API kérést
  2. mentse a kapott adatokat a teszt.txt fájlba
  3. adatok nyomtatása fájlból a képernyőre
  4. futtassa a korábban megírt hello-world.py programot
  5. írjuk a programtól kapott adatokat a teszt.txt fájlba
  6. adatok nyomtatása fájlból a képernyőre
  7. adatok áthelyezése fájlból a vágólapra
  8. megjeleníti a vágólap tartalmát
  9. megjelenít egy felugró üzenetet a vágólapról származó adatokkal

Először hozzon létre egy mappát a munka számára, és másolja oda a hello-worl.py fájlt test.py néven, hozzon létre test.sh és test.txt fájlokat ebben a mappában:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Most bármilyen kényelmes módon írja be a szkriptet a test.sh fájlba:

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

Most, hogy a bashscript mappában vagyunk, írunk ./test.sh megfigyeljük az Android-eszköz termináljában:

Termux lépésről lépésre (2. rész)

Így megírtuk a tervezett bash forgatókönyvet. Hígíthatja az egyes műveletek végrehajtásáról szóló információs konzol kimenetével (echo segítségével), ezt meghagyom az olvasóknak.

Lépés 7

Csináljunk valami hasznosat

Viszonylag hasznos

Fogalmazzuk meg a feladatkört
Indítás után az alkalmazásnak a fájlból egy véletlenszerű sort kell helyeznie a vágólapra, és erről egy felugró üzenettel értesítenie kell.

Egy bash szkriptet veszünk alapul, egy fájlból egy Python szubrutin segítségével kivonunk egy véletlenszerű sort. Készítsünk egy script munkatervet:

  1. Futtassa az alprogramot
  2. Az alprogram eredményét vigye át a vágólapra
  3. Előugró üzenet megjelenítése

Határozzuk meg a könyvtár és az alkalmazásfájlok nevét:

  • rndstr mappát a saját könyvtárban
    • forrás - az a fájl, amelyből sorokat veszünk
    • rndstr.py – egy szubrutin, amely véletlenszerű sort jelenít meg a forrásfájlból a konzolba
    • rndstr.sh - script fájl

Hozzon létre egy alkalmazáskönyvtárat, lépjen oda, és hozzon létre fájlokat.

A szkriptterv első két pontja egy csővezetékkel kombinálható, így a Termux: API használatával a következőt kapjuk:

#!/bin/bash

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

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

A forrásfájlban bármilyen szöveget logikailag sorokra bonthat, úgy döntöttem, hogy aforizmákat teszek:

Forrásfájlok listája

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

Csak létre kell hoznunk egy szubrutint, amely kivon egy véletlenszerű karakterláncot a forrásfájlból.
Írjuk fel az alprogram algoritmusát:

  1. Nyílt forráskódú fájl
  2. Sorok számának számolása egy nyitott fájlban
  3. Zárja be a fájlt (nincs semmi, ami miatt hosszabb ideig nyitva kell tartani)
  4. A forrásfájl sorainak számán belül véletlenszerű egész számot generálunk
  5. Nyílt forráskódú fájl
  6. A generált szám száma alá egy sort adunk ki
  7. A fájl bezárása

Az algoritmust Pythonban valósítjuk meg (Python 3.7 alatt írom):

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

A fájlok létrehozása és írása után meg kell adnia a fájl végrehajtási engedélyeit rndstr.sh, és hozzon létre egy álnevet a gyors indításhoz.

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

Most írja be a terminálba rnst véletlenszerű aforizmát kapunk a vágólapra, amit például a levelezésben is használhatunk.

Itt legalább valami hasznosat írtunk. Viszonylag hasznos.

ps

Az utolsó lépésben szándékosan nem készítettem képernyőképeket, és nem elemeztem részletesen egyes műveleteket, csak a fájlok tartalmát írtam, hogy az olvasóknak lehetőségük legyen önállóan dolgozni.

Ezen a "Termuxon lépésről lépésre" szerintem érdemes befejezni. Természetesen ezek csak a legelső lépések, de most már te is előre léphetsz.

Kezdetben azt terveztem, hogy ebben a ciklusban bemutatom az nmap, sqlmap használatát, de nélkülem már rengeteg cikk született ebben a témában. Ha szeretnéd, hogy folytassam a „Termux lépésről lépésre” ciklust, akkor lent van egy kérdőív és kommentben tudtok javasolni, hogy miről írhatnátok még.

A felmérésben csak regisztrált felhasználók vehetnek részt. Bejelentkezés, kérem.

Folytassa a "Termux lépésről lépésre"?

  • Igen

  • Nincs

2 felhasználó szavazott. Nincs tartózkodás.

Forrás: will.com

Hozzászólás