Termux stap vir stap (Deel 2)

В laaste deel ons het kennis gemaak met die basiese opdragte van Termux, 'n SSH-verbinding met 'n rekenaar opgestel, geleer hoe om alias's te skep en verskeie nuttige nutsprogramme geïnstalleer. Hierdie keer moet ons nog verder stap, ons is by jou:

  • leer oor Termux:API
  • installeer Python en nano, en skryf "Hallo, wêreld!" in Python
  • leer oor bash-skrifte en skryf 'n skrif met Termux:API
  • met behulp van 'n bash script, Termux: API en Python sal ons 'n eenvoudige program skryf

Aangesien ons nou verstaan ​​wat die invoeropdragte doen, sal ek vanaf die volgende stap nie elke aksie in so besonderhede beskryf nie, maar waar daar probleme kan wees, sal ek beslis verduidelik.

Ek gebruik baie aliasse, so die afkortings wat in hierdie deel gebruik word, word hier gewys:

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

Die plan is gereed, jy kan begin! En natuurlik, moenie vergeet van die "magic Tab" (Sien Deel 1).

Stap 4

Duik in die Termux:API-konyngat af

API hoeveel het saamgesmelt in hierdie woord vir die kodeerder se hart

As ons nie die onderwerp van Termux: API aanraak nie, kan al ons stappe verminder word tot 'n eenvoudige hervertelling van een of ander brosjure soos "Linux vir Dummies", soos tereg in die opmerkings by die eerste deel opgemerk is.

Installeer eers Termux:API vanaf die Google Play Market (dit maak nie seer om Termux daarna weer te begin nie):

Termux stap vir stap (Deel 2)

Vervolgens moet ons die API-pakket in die Termux-konsole installeer:

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

Vir eksperimentering gebruik ek Android 5.1.1, vir Android 7 moet eienaars Termux: API "beskerm" deur na 'Settings' > 'Protected Apps' te gaan, anders API-oproepe soos termux-battery-status, sal hang. (Cm. projek wiki)

Nou is dit die moeite werd om die verworwe geleenthede van nader te bekyk. Die nuutste en mees gedetailleerde beskrywing van Termux:API kan gevind word by projek wiki. Ek sal probeer om die mees visuele en interessantste te kies, wat my in staat sal stel om my hand te vul vir onafhanklike werk in die toekoms.

Sommige Termux:API-voorbeelde

  • termux-battery-status
    Wys die toestand van die battery terug
    Termux stap vir stap (Deel 2)
  • termux-helderheid
    Stel die helderheid van die skerm van 0 tot 255
    Termux stap vir stap (Deel 2)
  • termux-roosterbrood
    Wys 'n tydelike roosterbroodkennisgewing
    Termux stap vir stap (Deel 2)
  • termux-fakkel
    Sluit flitslig in
    Termux stap vir stap (Deel 2)
  • termux-wifi-scaninfo
    Wys inligting oor die laaste skandering van Wi-Fi-netwerke
    Termux stap vir stap (Deel 2)

Dit is maklik om te sien dat die terugkeerwaardes stringe, woordeboeke, lyste van woordeboeke is, in die algemeen, datatipes waarmee Python uitstekend werk, so die volgende stap is om dit op te stel.

Stap 5

Installeer Python en nano

Om Python te installeer, skryf in die terminale:

updg
apt install python
apt install python2

Ons het nou 2 en 3 Python geïnstalleer.

Terwyl ek aan die artikel gewerk het, het ek 'n ander nano-teksredigeerder ontdek waarvan ek meer gehou het as van vim, kom ons installeer dit:

apt install nano

Dit is makliker om te gebruik as vim, en nano het 'n meer gebruikersvriendelike koppelvlak. Op 'n Android-toestel is vim steeds geriefliker.

HelloWorld in Python by Termux

Oor die algemeen was dit moontlik om sonder hierdie item klaar te kom, maar om Python in Termux te plaas en nie HelloWorld te skryf nie, is na my mening slegte maniere.

Ek beoog nie om vir iemand Python te leer nie, so diegene wat nie weet nie, kan eenvoudig die kode kopieer (of op hul eie begin leer, aangesien daar genoeg literatuur is), en diegene wat weet kan self iets maak. En ek sal "onder die dekmantel" steeds 'n manier wys om teks in die terminale in te voer sonder 'n redigeerder.

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 vir stap (Deel 2)

As jy nie 'n fout tydens die invoerproses opgemerk het nie en reeds Enter gedruk het, sal jy nie na die reël hierbo kan gaan nie, om dit te doen, beëindig die invoer deur Ctrl + D te druk (jy kan gewoonlik Ctrl + onderbreek Z) en herhaal alles van die begin af. Aangesien ons '>' gebruik het, sal die lêer heeltemal oorskryf word. Om hierdie rede beveel ek nie aan om hierdie invoermetode te gebruik nie, tensy jy seker is dat jy die kode dadelik sonder foute sal skryf.

Stap 6

Bash skrifte

Bash-skrifte is 'n goeie manier om jou terminale werk te outomatiseer. Die script is 'n lêer met die .sh-uitbreiding (die uitbreiding is opsioneel) wat 'n stel terminale opdragte bevat, waarvan ons sommige reeds bestudeer het. Hier lys van die meeste opdragte, alles behoort te werk, maar let daarop dat dit 'n lys vir "volwasse" Linux is, nie Termux nie, maar net puik materiaal oor bash-skrifte.

Met behulp van skrifte kan jy byna alle eentonige aksies outomatiseer. Kom ons skryf die eenvoudigste bash script wat die waarde vertoon van die veranderlike wat hy geskep het, ek sal cat weer gebruik, jy kan 'n gewone teksredigeerder gebruik, en diegene wat veral hulself wil oplei, kan eggo gebruik.

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 vir stap (Deel 2)

Bash script met Termux:API

Kom ons skryf iets anders as die berugte HelloWorlds, maar net so nutteloos. Ons draaiboek sal wees:

  1. voer die termux-battery-status API-versoek uit
  2. stoor die ontvangde data na die lêer test.txt
  3. druk data van 'n lêer na die skerm
  4. voer die voorheen geskrewe hello-world.py-program uit
  5. skryf die data wat vanaf die program ontvang is na die lêer test.txt
  6. druk data van 'n lêer na die skerm
  7. skuif data van lêer na knipbord
  8. vertoon die inhoud van die knipbord
  9. vertoon 'n opspringboodskap met data vanaf die knipbord

Skep eers 'n vouer vir werk en kopieer hello-world.py daarheen as test.py, skep test.sh en test.txt lêers in hierdie vouer:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Skryf nou op enige gerieflike manier die skrif na die test.sh-lêer:

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

Nou, in die bashscript-lêergids, skryf ons ./test.sh ons neem waar in die terminale op die Android-toestel:

Termux stap vir stap (Deel 2)

So ons het die beplande bash script geskryf. Jy kan dit verdun met die uitset na die konsole van inligting oor die uitvoering van elke aksie (met eggo), ek sal dit vir die lesers oorlaat.

Stap 7

Kom ons doen iets nuttigs

Relatief bruikbaar

Kom ons formuleer die opdrag
Na bekendstelling moet die toepassing 'n ewekansige reël van die lêer op die knipbord plaas en met 'n opspringboodskap daaroor in kennis stel.

Ons sal 'n bash-skrif as basis neem, ons sal 'n ewekansige reël uit 'n lêer onttrek met 'n Python-subroetine. Kom ons maak 'n draaiboek werkplan:

  1. Begin subroetine
  2. Dra die resultaat van die subroetine oor na die knipbord
  3. Wys opspringboodskap

Kom ons definieer die name van die gids en toepassingslêers:

  • rndstr-lêergids in die tuisgids
    • bron - die lêer waaruit ons lyne sal neem
    • rndstr.py - 'n subroetine wat 'n ewekansige lyn van die bronlêer na die konsole vertoon
    • rndstr.sh - script lêer

Skep 'n toepassingsgids en skuif na dit en skep lêers daar.

Die eerste twee punte van die script plan kan gekombineer word deur 'n pyplyn, as gevolg hiervan, met behulp van Termux: API kry ons:

#!/bin/bash

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

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

In die bronlêer kan u enige teks logies verdeel in lyne plaas, ek het besluit om aforismes te plaas:

Bronlêerlys

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

Ons moet net 'n subroetine skep wat 'n ewekansige string uit die bronlêer onttrek.
Kom ons skryf die algoritme van die subroetine:

  1. Oopbronlêer
  2. Tel die aantal reëls in 'n oop lêer
  3. Maak die lêer toe (daar is niks om dit oop te hou vir ekstra tyd nie)
  4. Ons genereer 'n ewekansige heelgetal binne die aantal reëls van die bronlêer
  5. Oopbronlêer
  6. Ons voer 'n reël uit onder die nommer van die gegenereerde nommer
  7. Maak die lêer toe

Ons implementeer die algoritme in Python (ek skryf 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 die lêers geskep en geskryf is, moet jy die lêeruitvoertoestemmings gee rndstr.sh, en skep 'n alias vir vinnige bekendstelling.

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

Tik nou in terminale rnst ons sal 'n ewekansige aforisme op die knipbord kry, wat byvoorbeeld in korrespondensie gebruik kan word.

Hier het ons ten minste iets nuttig geskryf. Relatief bruikbaar.

PS

In die laaste stap het ek doelbewus nie skermskote verskaf nie en sommige van die aksies nie in detail ontleed nie en slegs die inhoud van die lêers geskryf sodat lesers die geleentheid het om op hul eie te werk.

Op hierdie "Termux stap vir stap" dink ek dit is die moeite werd om klaar te maak. Dit is natuurlik net die heel eerste stappe, maar nou kan jy self vorentoe beweeg.

Ek het aanvanklik beplan om in hierdie siklus te wys hoe om nmap, sqlmap te gebruik, maar sonder my is daar reeds baie artikels oor hierdie onderwerp. As jy wil hê ek moet voortgaan met die "Termux stap vir stap" siklus, dan is daar 'n opname hieronder en in die kommentaar kan jy voorstel waaroor jy nog moet skryf.

Slegs geregistreerde gebruikers kan aan die opname deelneem. Meld aan, asseblief.

Gaan voort "Termux stap vir stap"?

  • Ja

  • Geen

2 gebruikers het gestem. Daar is geen onthoudings nie.

Bron: will.com

Voeg 'n opmerking