Termux stap foar stap (diel 2)

В lêste diel wy makken kunde mei de basiskommando's fan Termux, sette in SSH-ferbining mei in PC op, learden hoe't jo alias's oanmeitsje en ferskate nuttige nutsfoarsjenningen ynstalleare. Dizze kear moatte wy noch fierder stappe, wy binne mei jo:

  • Learje oer Termux: API
  • ynstallearje Python en nano, en skriuw "Hallo, wrâld!" yn Python
  • Learje oer bash-skripts en skriuw in skript mei Termux: API
  • mei help fan in bash skript, Termux: API en Python wy sille skriuwe in ienfâldich programma

Om't wy no begripe wat de ynfierkommando's dogge, dan sil ik fan 'e folgjende stap net elke aksje yn sa'n detail beskriuwe, mar wêr't swierrichheden kinne wêze, sil ik perfoarst útlizze.

Ik brûk in protte aliassen, dus de ôfkoartings dy't yn dit diel brûkt wurde wurde hjir werjûn:

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

It plan is klear, jo kinne begjinne! En ferjit fansels net de "magyske ljepper" (Sjoch diel 1).

stap 4

Dûk del de Termux: API Rabbit Hole

API hoefolle is gearfoege yn dit wurd foar it hert fan de coder

As wy it ûnderwerp fan Termux: API net oanreitsje, dan kinne al ús stappen wurde fermindere ta in ienfâldige wertelling fan guon brosjuere lykas "Linux for Dummies", lykas terjochte waard opmurken yn 'e opmerkings nei it earste diel.

Ynstallearje earst Termux: API fan 'e Google Play Market (it docht gjin sear om Termux letter opnij te starten):

Termux stap foar stap (diel 2)

Folgjende moatte wy it API-pakket yn 'e Termux-konsole ynstallearje:

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

Foar eksperimintearjen brûk ik Android 5.1.1, foar Android 7 moatte eigners Termux: API "beskermje" troch te gean nei 'Ynstellings' > 'Beskerme apps', oars API-oproppen lykas termux-battery-status, sil hingje. (Cm. projekt wiki)

No is it de muoite wurdich om in tichterby te sjen nei de oankochte kânsen. De lêste en meast detaillearre beskriuwing fan Termux: API is te finen op projekt wiki. Ik sil besykje de meast fisuele en ynteressante te kiezen, wêrtroch't ik myn hân kin folje foar selsstannich wurk yn 'e takomst.

Guon Termux: API-foarbylden

  • termux-battery-status
    Jout de steat fan 'e batterij werom
    Termux stap foar stap (diel 2)
  • termux-helderheid
    Stelt de helderheid fan it skerm yn fan 0 oant 255
    Termux stap foar stap (diel 2)
  • termux-toast
    Toant in tydlike toastnotifikaasje
    Termux stap foar stap (diel 2)
  • termux-fakkel
    Omfettet zaklamp
    Termux stap foar stap (diel 2)
  • termux-wifi-scaninfo
    Jout ynformaasje werom oer de lêste scan fan Wi-Fi-netwurken
    Termux stap foar stap (diel 2)

It is maklik om te sjen dat de weromkommende wearden snaren, wurdboeken, listen mei wurdboeken binne, yn 't algemien, gegevenstypen wêrmei Python wurket, dus de folgjende stap is it yn te stellen.

stap 5

Ynstallearje Python en nano

Om Python te ynstallearjen, skriuw yn 'e terminal:

updg
apt install python
apt install python2

Wy hawwe no 2 en 3 Python ynstalleare.

Wylst ik oan it artikel wurke, ûntduts ik in oare nano-tekstbewurker dy't ik mear leuk fûn dan vim, litte wy it ynstallearje:

apt install nano

It is makliker te brûken dan vim, en nano hat in mear brûkerfreonlike ynterface. Op in Android-apparaat is vim noch handiger.

HelloWorld yn Python by Termux

Oer it algemien wie it mooglik om sûnder dit item te dwaan, mar Python yn Termux sette en HelloWorld net skriuwe, is neffens my minne manieren.

Ik bin net fan doel om ien Python te learen, dus wa't it net wit kin de koade gewoan kopiearje (of sels begjinne te learen, om't der genôch literatuer is), en wa't it wit kin sels wat meitsje. En ik sil "ûnder it mom" noch in manier sjen litte om tekst yn 'e terminal yn te fieren sûnder in bewurker.

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 foar stap (diel 2)

As jo ​​​​gjin flater hawwe opmurken tidens it ynfierproses en al op Enter drukke, dan kinne jo net nei de line hjirboppe gean, om dit te dwaan, einigje de ynfier troch te drukken op Ctrl + D (jo kinne oer it algemien Ctrl + Z ûnderbrekke) en werhelje alles fan it begjin ôf. Om't wy '>' brûkten, sil de triem folslein oerskreaun wurde. Om dizze reden advisearje ik dizze ynfiermetoade net te brûken, útsein as jo der wis fan binne dat jo de koade direkt sûnder flaters sille skriuwe.

stap 6

bash skripts

Bash-skripts binne in geweldige manier om jo terminalwurk te automatisearjen. It skript is in bestân mei de .sh-útwreiding (de tafoeging is opsjoneel) mei in set fan terminalkommando's, wêrfan guon wy al studearre hawwe. Hjir list fan de measte kommando's, alles moat wurkje, mar tink derom dat dit in list is foar "folwoeksen" Linux, net Termux, mar gewoan geweldig materiaal op bash-skripts.

Mei help fan skripts kinne jo hast alle monotone aksjes automatisearje. Litte wy it ienfâldichste bash-skript skriuwe dat de wearde toant fan 'e fariabele dy't hy makke, Ik sil kat wer brûke, jo kinne in normale tekstbewurker brûke, en dyjingen dy't harsels foaral wolle traine, kinne echo brûke.

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 foar stap (diel 2)

Bash-skript mei Termux: API

Litte wy wat oars skriuwe as de beruchte HelloWorlds, mar like nutteloos. Us skript sil wêze:

  1. it termux-battery-status API-fersyk útfiere
  2. bewarje de ûntfongen gegevens yn de triem test.txt
  3. print gegevens fan in bestân nei it skerm
  4. it earder skreaune hello-world.py-programma útfiere
  5. skriuw de gegevens ûntfongen fan it programma nei de triem test.txt
  6. print gegevens fan in bestân nei it skerm
  7. ferpleatse gegevens fan triem nei klamboerd
  8. werjaan de ynhâld fan it klamboerd
  9. werjaan in popup berjocht mei gegevens fan it klamboerd

Meitsje earst in map foar wurk en kopiearje hello-world.py dêr as test.py, meitsje test.sh en test.txt-bestannen yn dizze map:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

No, op elke handige manier, skriuw it skript nei it test.sh-bestân:

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

No, yn 'e bashscript-map, skriuwe wy ./test.sh wy observearje yn 'e terminal op it Android-apparaat:

Termux stap foar stap (diel 2)

Dat wy skreaunen it plande bash-skript. Jo kinne it ferwiderje mei de útfier nei de konsole fan ynformaasje oer de útfiering fan elke aksje (mei echo), ik sil dit foar de lêzers litte.

stap 7

Litte wy wat nuttichs dwaan

Relatyf brûkber

Lit ús formulearje de betingsten fan referinsje
Nei it starten moat de applikaasje in willekeurige rigel fan it bestân op it klamboerd pleatse en deroer ynformearje mei in pop-upberjocht.

Wy sille in bash-skript as basis nimme, wy sille in willekeurige rigel út in bestân ekstrahearje mei in Python-subroutine. Litte wy in skriptwurkplan meitsje:

  1. Run subroutine
  2. Oermeitsje it resultaat fan 'e subroutine nei it klamboerd
  3. Popup-berjocht werjaan

Litte wy de nammen fan 'e map en applikaasjebestannen definiearje:

  • rndstr map yn thúsmap
    • boarne - it bestân wêrfan wy rigels sille nimme
    • rndstr.py - in subroutine dy't in willekeurige rigel fan 'e boarnetriem nei de konsole toant
    • rndstr.sh - skripttriem

Meitsje in applikaasjemap en ferpleatse dernei en meitsje dêr bestannen oan.

De earste twa punten fan it skriptplan kinne wurde kombinearre troch in pipeline, as gefolch, mei Termux: API krije wy:

#!/bin/bash

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

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

Yn it boarnebestân kinne jo elke tekst logysk ferdield yn rigels pleatse, ik besleat om aforismen te pleatsen:

Boarne triemlist

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

Wy moatte gewoan in subroutine meitsje dy't in willekeurige tekenrige út it boarnebestân ekstrakt.
Litte wy it algoritme fan 'e subroutine skriuwe:

  1. Iepenje boarne triem
  2. It tellen fan it oantal rigels yn in iepen bestân
  3. Slút it bestân (d'r is neat om it iepen te hâlden foar ekstra tiid)
  4. Wy generearje in willekeurich hiel getal binnen it oantal rigels fan de boarne triem
  5. Iepenje boarne triem
  6. Wy útfiere in rigel ûnder it nûmer fan it oanmakke nûmer
  7. It sluten fan de triem

Wy implementearje it algoritme yn Python (ik skriuw ûnder 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  #  закрываем файл

Nei't de triemmen binne makke en skreaun, moatte jo de útfieringsrjochten foar de triem jaan rndstr.sh, en meitsje in alias foar flugge start.

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

Typ no yn terminal rnst wy krije in willekeurich aforisme op it klamboerd, dat bygelyks brûkt wurde kin yn korrespondinsje.

Hjir hawwe wy op syn minst wat nuttichs skreaun. Relatyf brûkber.

Ps

Yn 'e lêste stap haw ik mei opsetsin gjin skermôfbyldings levere en guon fan' e aksjes net yn detail analysearre, allinich de ynhâld fan 'e bestannen skreaun, sadat lêzers de kâns hawwe om op har eigen te wurkjen.

Op dizze "Termux stap foar stap" fyn ik it de muoite wurdich om ôf te meitsjen. Fansels binne dit allinich de earste stappen, mar no kinne jo sels foarút gean.

Yn it earstoan wie ik fan plan om yn dizze syklus te sjen hoe't jo nmap, sqlmap brûke, mar sûnder my binne d'r al in protte artikels oer dit ûnderwerp. As jo ​​​​wolle dat ik de "Termux stap foar stap" syklus trochgie, dan is d'r in enkête hjirûnder en yn 'e opmerkings kinne jo foarstelle wêr't jo oars oer skriuwe.

Allinnich registrearre brûkers kinne meidwaan oan 'e enkête. Ynlogge, asjebleaft.

Trochgean mei "Termux stap foar stap"?

  • dat

  • gjin

2 brûkers stimden. Der binne gjin ûnthâldens.

Boarne: www.habr.com

Add a comment