Termux stap voor stap (deel 2)

В laatste deel we maakten kennis met de basiscommando's van Termux, zetten een SSH-verbinding met een pc op, leerden aliassen maken en installeerden verschillende handige hulpprogramma's. Deze keer moeten we nog een stap verder gaan, we zijn bij jullie:

  • leer meer over Termux:API
  • installeer Python en nano en schrijf "Hallo, wereld!" in Python
  • leer over bash-scripts en schrijf een script met Termux:API
  • met behulp van een bash-script, Termux:API en Python zullen we een eenvoudig programma schrijven

Aangezien we nu begrijpen wat de invoeropdrachten doen, zal ik vanaf de volgende stap niet elke actie zo gedetailleerd beschrijven, maar waar er problemen kunnen zijn, zal ik het zeker uitleggen.

Ik gebruik veel aliassen, dus de afkortingen die in dit deel worden gebruikt, worden hier weergegeven:

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

Het plan is klaar, je kunt beginnen! En vergeet natuurlijk niet de "magische tab" (Zie Deel 1).

Stap 4

Duiken langs de Termux: API Rabbit Hole

API hoeveel is er in dit woord samengevoegd voor het hart van de codeur

Als we het niet hebben over het onderwerp Termux: API, dan zouden al onze stappen kunnen worden teruggebracht tot een eenvoudige hervertelling van een brochure zoals "Linux voor Dummies", zoals terecht werd opgemerkt in de opmerkingen bij het eerste deel.

Installeer eerst Termux:API van de Google Play Market (het kan geen kwaad om Termux daarna opnieuw te starten):

Termux stap voor stap (deel 2)

Vervolgens moeten we het API-pakket in de Termux-console installeren:

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

Voor experimenten gebruik ik Android 5.1.1, voor Android 7-bezitters moeten Termux: API "beschermen" door naar 'Instellingen' > 'Beveiligde apps' te gaan, anders roept API op zoals termux-battery-status, zal hangen. (Cm. projectwiki)

Nu is het de moeite waard om de verworven kansen nader te bekijken. De nieuwste en meest gedetailleerde beschrijving van Termux:API is te vinden op projectwiki. Ik zal proberen de meest visuele en interessante te kiezen, waardoor ik in de toekomst mijn hand kan vullen voor onafhankelijk werk.

Enkele Termux:API-voorbeelden

  • termux-batterij-status
    Retourneert de status van de batterij
    Termux stap voor stap (deel 2)
  • termux-helderheid
    Stelt de helderheid van het scherm in van 0 tot 255
    Termux stap voor stap (deel 2)
  • termux-toast
    Toont een tijdelijke toastmelding
    Termux stap voor stap (deel 2)
  • termux-fakkel
    Inclusief zaklamp
    Termux stap voor stap (deel 2)
  • termux-wifi-scaninfo
    Retourneert informatie over de laatste scan van Wi-Fi-netwerken
    Termux stap voor stap (deel 2)

Het is gemakkelijk te zien dat de geretourneerde waarden strings, woordenboeken, lijsten met woordenboeken, in het algemeen gegevenstypen zijn waar Python goed mee werkt, dus de volgende stap is om het in te stellen.

Stap 5

Installeer Python en nano

Om Python te installeren, schrijft u in de terminal:

updg
apt install python
apt install python2

We hebben nu 2 en 3 Python geïnstalleerd.

Terwijl ik aan het artikel werkte, ontdekte ik een andere nano-teksteditor die ik leuker vond dan vim, laten we het installeren:

apt install nano

Het is gemakkelijker te gebruiken dan vim en nano heeft een gebruiksvriendelijkere interface. Op een Android-apparaat is vim nog steeds handiger.

HelloWorld in Python bij Termux

Over het algemeen was het mogelijk om zonder dit item te doen, maar Python in Termux plaatsen en HelloWorld niet schrijven, is naar mijn mening slechte manieren.

Ik heb mezelf niet tot doel gesteld om iemand Python te leren, dus degenen die het niet weten kunnen de code gewoon kopiëren (of zelf beginnen met leren, want er is genoeg literatuur), en degenen die het weten kunnen zelf iets maken. En ik zal "onder het mom" nog steeds een manier laten zien om tekst in de terminal in te voeren zonder een editor.

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 stap voor stap (deel 2)

Als u tijdens het invoerproces geen fout hebt opgemerkt en al op Enter hebt gedrukt, kunt u niet naar de regel hierboven gaan. Om dit te doen, beëindigt u de invoer door op Ctrl + D te drukken (u kunt Ctrl + D over het algemeen onderbreken Z) en herhaal alles vanaf het begin. Omdat we '>' gebruikten, wordt het bestand volledig overschreven. Om deze reden raad ik het gebruik van deze invoermethode niet aan, tenzij u er zeker van bent dat u de code onmiddellijk foutloos zult schrijven.

Stap 6

Bash-scripts

Bash-scripts zijn een geweldige manier om uw terminalwerk te automatiseren. Het script is een bestand met de extensie .sh (de extensie is optioneel) dat een reeks terminalcommando's bevat, waarvan we er enkele al hebben bestudeerd. Hier lijst met de meeste commando's, zou alles moeten werken, maar merk op dat dit een lijst is voor "volwassen" Linux, niet Termux, maar gewoon geweldig materiaal over bash-scripts.

Met behulp van scripts kun je bijna alle eentonige handelingen automatiseren. Laten we het eenvoudigste bash-script schrijven dat de waarde weergeeft van de variabele die hij heeft gemaakt, ik gebruik weer cat, je kunt een normale teksteditor gebruiken, en degenen die vooral zichzelf willen trainen, kunnen echo gebruiken.

cat >test.sh

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

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

# Ctrl + D

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

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

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

Termux stap voor stap (deel 2)

Bash-script met Termux:API

Laten we iets anders schrijven dan de beruchte HelloWorlds, maar net zo nutteloos. Ons script wordt:

  1. voer het API-verzoek termux-battery-status uit
  2. sla de ontvangen gegevens op in het bestand test.txt
  3. print gegevens uit een bestand naar het scherm
  4. voer het eerder geschreven programma hello-world.py uit
  5. schrijf de ontvangen gegevens van het programma naar het bestand test.txt
  6. print gegevens uit een bestand naar het scherm
  7. verplaats gegevens van bestand naar klembord
  8. de inhoud van het klembord weergeven
  9. een pop-upbericht weergeven met gegevens van het klembord

Maak eerst een map voor werk en kopieer hello-world.py daar als test.py, maak test.sh- en test.txt-bestanden in deze map:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Schrijf nu op een handige manier het script naar het bestand 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

Nu we in de map bashscript zijn, schrijven we ./test.sh we observeren in de terminal op het Android-apparaat:

Termux stap voor stap (deel 2)

Dus schreven we het geplande bash-script. Je kunt het verdunnen met de uitvoer naar de console van informatie over de uitvoering van elke actie (met behulp van echo), ik laat dit aan de lezers over.

Stap 7

Laten we iets nuttigs doen

Relatief nuttig

Laten we de voorwaarden formuleren
Na het opstarten zou de applicatie een willekeurige regel uit het bestand op het klembord moeten plaatsen en dit melden met een pop-upbericht.

We nemen een bash-script als basis, we halen een willekeurige regel uit een bestand met behulp van een Python-subroutine. Laten we een scriptwerkplan maken:

  1. Voer subroutine uit
  2. Breng het resultaat van de subroutine over naar het klembord
  3. Pop-upbericht weergeven

Laten we de namen van de directory- en toepassingsbestanden definiëren:

  • map rndstr in de thuismap
    • bron - het bestand waaruit we regels zullen halen
    • rndstr.py - een subroutine die een willekeurige regel van het bronbestand naar de console weergeeft
    • rndstr.sh - scriptbestand

Maak een toepassingsmap en ga ernaar toe en maak daar bestanden aan.

De eerste twee punten van het scriptplan kunnen worden gecombineerd door een pijplijn, als resultaat krijgen we met Termux: API:

#!/bin/bash

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

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

In het bronbestand kun je elke tekst logisch verdeeld in regels plaatsen, ik besloot om aforismen te plaatsen:

Lijst met bronbestanden

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

We hoeven alleen maar een subroutine te maken die een willekeurige string uit het bronbestand haalt.
Laten we het algoritme van de subroutine schrijven:

  1. Open source-bestand
  2. Het aantal regels tellen in een geopend bestand
  3. Sluit het bestand (er is niets om het langer open te houden)
  4. We genereren een willekeurig geheel getal binnen het aantal regels van het bronbestand
  5. Open source-bestand
  6. We voeren een regel uit onder het nummer van het gegenereerde nummer
  7. Het sluiten van het bestand

We implementeren het algoritme in Python (ik schrijf onder 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  #  закрываем файл

Nadat de bestanden zijn gemaakt en geschreven, moet u de bestandsuitvoeringsrechten geven rndstr.sh, en maak een alias voor snelle lancering.

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

Typ nu in terminal rnst we krijgen een willekeurig aforisme op het klembord, dat bijvoorbeeld in correspondentie kan worden gebruikt.

Hier hebben we in ieder geval iets nuttigs geschreven. Relatief nuttig.

Ps

In de laatste stap heb ik opzettelijk geen screenshots gemaakt en sommige acties niet in detail geanalyseerd, waarbij ik alleen de inhoud van de bestanden heb geschreven, zodat lezers de mogelijkheid hebben om zelfstandig te werken.

Op deze "Termux stap voor stap" denk ik dat het de moeite waard is om af te ronden. Dit zijn natuurlijk nog maar de allereerste stappen, maar nu kun je zelf verder.

Aanvankelijk was ik van plan om in deze cyclus te laten zien hoe je nmap, sqlmap gebruikt, maar zonder mij zijn er al veel artikelen over dit onderwerp. Als je wilt dat ik de "Termux stap voor stap" -cyclus voortzet, dan is er een overzicht hieronder en in de opmerkingen kun je voorstellen waar je nog meer over kunt schrijven.

Alleen geregistreerde gebruikers kunnen deelnemen aan het onderzoek. Inloggen, Alsjeblieft.

Doorgaan met "Termux stap voor stap"?

  • Ja

  • Geen

2 gebruikers hebben gestemd. Er zijn geen onthoudingen.

Bron: www.habr.com

Voeg een reactie