Termux trinn for trinn (del 2)

В siste del vi ble kjent med de grunnleggende kommandoene til Termux, satte opp en SSH-tilkobling til en PC, lærte å lage alias og installerte flere nyttige verktøy. Denne gangen må vi gå enda lenger, vi er med deg:

  • Lær om Termux:API
  • installer Python og nano, og skriv "Hei, verden!" i Python
  • lær om bash-skript og skriv et skript ved hjelp av Termux:API
  • ved å bruke et bash-skript, Termux:API og Python vil vi skrive et enkelt program

Siden vi nå forstår hva inngangskommandoene gjør, vil jeg fra neste trinn ikke beskrive hver handling så detaljert, men hvor det kan være vanskeligheter, vil jeg definitivt forklare.

Jeg bruker aliaser mye, så forkortelsene som brukes i denne delen vises her:

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

Planen er klar, du kan begynne! Og selvfølgelig, ikke glem den "magiske fanen" (Se del 1).

Trinn 4

Dykking nedover Termux:API-kaninhullet

API hvor mye har smeltet sammen i dette ordet for koderens hjerte

Hvis vi ikke berører temaet Termux: API, kan alle trinnene våre reduseres til en enkel gjenfortelling av en brosjyre som "Linux for Dummies", som det med rette ble bemerket i kommentarene til den første delen.

Installer først Termux:API fra Google Play Market (det skader ikke å starte Termux på nytt etterpå):

Termux trinn for trinn (del 2)

Deretter må vi installere API-pakken i Termux-konsollen:

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

For eksperimentering bruker jeg Android 5.1.1, for Android 7 må eiere "beskytte" Termux: API ved å gå til "Innstillinger" > "Beskyttede apper", ellers kaller API-er som f.eks. termux-battery-status, vil henge. (Cm. prosjekt wiki)

Nå er det verdt å se nærmere på de ervervede mulighetene. Den siste og mest detaljerte beskrivelsen av Termux:API finner du på prosjekt wiki. Jeg vil prøve å velge det mest visuelle og interessante, som vil tillate meg å fylle hånden min for selvstendig arbeid i fremtiden.

Noen Termux:API-eksempler

  • termux-batteristatus
    Returnerer tilstanden til batteriet
    Termux trinn for trinn (del 2)
  • termux-lysstyrke
    Stiller inn lysstyrken på skjermen fra 0 til 255
    Termux trinn for trinn (del 2)
  • termux-toast
    Viser et midlertidig toastvarsel
    Termux trinn for trinn (del 2)
  • termux-fakkel
    Inkluderer lommelykt
    Termux trinn for trinn (del 2)
  • termux-wifi-scaninfo
    Returnerer informasjon om siste skanning av Wi-Fi-nettverk
    Termux trinn for trinn (del 2)

Det er lett å se at returverdiene er strenger, ordbøker, lister over ordbøker, generelt datatyper som Python fungerer bra med, så neste trinn er å sette det opp.

Trinn 5

Installer Python og nano

For å installere Python, skriv i terminalen:

updg
apt install python
apt install python2

Vi har nå installert 2 og 3 Python.

Mens jeg jobbet med artikkelen, oppdaget jeg en annen nanotekstredigerer som jeg likte mer enn vim, la oss installere den:

apt install nano

Det er enklere å bruke enn vim, og nano har et mer brukervennlig grensesnitt. På en Android-enhet er vim fortsatt mer praktisk.

HelloWorld i Python på Termux

I det store og hele var det mulig å klare seg uten denne gjenstanden, men å sette Python i Termux og ikke skrive HelloWorld, etter min mening, er dårlig oppførsel.

Jeg setter meg ikke som mål å lære noen Python, så de som ikke vet kan ganske enkelt kopiere koden (eller begynne å lære på egenhånd, siden det er nok litteratur), og de som vet kan lage noe selv. Og jeg vil "under dekke" fortsatt vise en måte å skrive inn tekst i terminalen uten en 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 trinn for trinn (del 2)

Hvis du ikke la merke til en feil under inndataprosessen og allerede har trykket på Enter, vil du ikke kunne gå til linjen ovenfor, for å gjøre dette, avslutter du inntastingen ved å trykke Ctrl + D (du kan vanligvis avbryte Ctrl + Z) og gjenta alt fra begynnelsen. Siden vi brukte '>' vil filen bli fullstendig overskrevet. Av denne grunn anbefaler jeg ikke å bruke denne inndatametoden med mindre du er sikker på at du vil skrive koden umiddelbart uten feil.

Trinn 6

Bash-manus

Bash-skript er en fin måte å automatisere terminalarbeidet på. Skriptet er en fil med filtypen .sh (utvidelsen er valgfri) som inneholder et sett med terminalkommandoer, noen av dem har vi allerede studert. Her liste over de fleste kommandoer, alt skal fungere, men merk at dette er en liste for "voksen" Linux, ikke Termux, men bare flott materiale på bash-manus.

Ved hjelp av skript kan du automatisere nesten alle monotone handlinger. La oss skrive det enkleste bash-skriptet som viser verdien fra variabelen han opprettet, jeg bruker cat igjen, du kan bruke en vanlig teksteditor, og de som spesielt ønsker å trene seg selv kan bruke 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 trinn for trinn (del 2)

Bash-skript med Termux:API

La oss skrive noe annet enn de beryktede HelloWorlds, men like ubrukelig. Manuset vårt vil være:

  1. utfør termux-battery-status API-forespørselen
  2. lagre de mottatte dataene til filen test.txt
  3. skrive ut data fra en fil til skjermen
  4. kjør det tidligere skrevne programmet hello-world.py
  5. skriv dataene mottatt fra programmet til filen test.txt
  6. skrive ut data fra en fil til skjermen
  7. flytte data fra fil til utklippstavle
  8. vise innholdet på utklippstavlen
  9. vise en popup-melding med data fra utklippstavlen

Opprett først en mappe for jobb og kopier hello-world.py dit som test.py, lag test.sh og test.txt-filer i denne mappen:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Nå, på en hvilken som helst praktisk måte, skriv skriptet til test.sh-filen:

#!/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år vi nå er i bashscript-mappen, skriver vi ./test.sh vi observerer i terminalen på Android-enheten:

Termux trinn for trinn (del 2)

Så vi skrev det planlagte bash-manuset. Du kan fortynne det med utdata til konsollen med informasjon om utførelsen av hver handling (ved hjelp av ekko), jeg vil overlate dette til leserne.

Trinn 7

La oss gjøre noe nyttig

Relativt nyttig

La oss formulere referansevilkårene
Etter oppstart skal applikasjonen plassere en tilfeldig linje fra filen på utklippstavlen og varsle om det med en popup-melding.

Vi vil ta et bash-skript som grunnlag, vi vil trekke ut en tilfeldig linje fra en fil ved hjelp av en Python-subrutine. La oss lage en arbeidsplan for manus:

  1. Kjør subrutine
  2. Overfør resultatet av subrutinen til utklippstavlen
  3. Vis popup-melding

La oss definere navnene på katalogen og programfilene:

  • rndstr-mappen i hjemmekatalogen
    • kilde - filen som vi tar linjer fra
    • rndstr.py - en subrutine som viser en tilfeldig linje fra kildefilen til konsollen
    • rndstr.sh - skriptfil

Opprett en programkatalog og flytt til den og lag filer der.

De to første punktene i skriptplanen kan kombineres med en pipeline, som et resultat, ved å bruke Termux: API får vi:

#!/bin/bash

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

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

I kildefilen kan du legge hvilken som helst tekst logisk delt inn i linjer, jeg bestemte meg for å sette aforismer:

Kildefiloppføring

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

Vi trenger bare å lage en subrutine som trekker ut en tilfeldig streng fra kildefilen.
La oss skrive algoritmen til subrutinen:

  1. Åpen kildefil
  2. Å telle antall linjer i en åpen fil
  3. Lukk filen (det er ingenting som kan holde den åpen for ekstra tid)
  4. Vi genererer et tilfeldig heltall innenfor antall linjer i kildefilen
  5. Åpen kildefil
  6. Vi sender ut en linje under nummeret til det genererte nummeret
  7. Lukker filen

Vi implementerer algoritmen i Python (jeg skriver under 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  #  закрываем файл

Etter at filene er opprettet og skrevet, må du gi filen kjøringstillatelser rndstr.sh, og opprett et alias for hurtigstart.

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

Skriver nå i terminal rnst vi vil få en tilfeldig aforisme på utklippstavlen, som for eksempel kan brukes i korrespondanse.

Her har vi skrevet i det minste noe nyttig. Relativt nyttig.

ps

I det siste trinnet ga jeg med vilje ikke skjermbilder og analyserte ikke noen av handlingene i detalj, og skrev bare innholdet i filene slik at leserne har mulighet til å jobbe på egenhånd.

På denne «Termux steg for steg» synes jeg det er verdt å fullføre. Selvfølgelig er dette bare de aller første trinnene, men nå kan du gå videre selv.

I utgangspunktet planla jeg å vise i denne syklusen hvordan du bruker nmap, sqlmap, men uten meg er det allerede mange artikler om dette emnet. Hvis du vil at jeg skal fortsette «Termux steg for steg»-syklusen, så er det en undersøkelse nedenfor, og i kommentarfeltet kan du foreslå hva annet du kan skrive om.

Kun registrerte brukere kan delta i undersøkelsen. Logg inn, vær så snill.

Fortsette "Termux steg for steg"?

  • Ja

  • Ikke

2 brukere stemte. Det er ingen avståelser.

Kilde: www.habr.com

Legg til en kommentar