Hakbang-hakbang na Termux (Bahagi 2)

В huling parte Nakilala namin ang mga pangunahing utos ng Termux, nag-set up ng koneksyon sa SSH sa isang PC, natutunan kung paano lumikha ng mga alias at nag-install ng ilang kapaki-pakinabang na mga utility. Sa pagkakataong ito, kailangan pa naming lumayo, kasama ka namin:

  • alamin ang tungkol sa Termux:API
  • I-install natin ang Python at nano, at isulat din ang "Hello, world!" sa Python
  • alamin ang tungkol sa mga script ng bash at magsulat ng script gamit ang Termux:API
  • Sumulat tayo ng isang simpleng programa gamit ang isang bash script, Termux:API at Python

Dahil naiintindihan na natin ngayon kung ano ang ginagawa ng ipinasok na mga utos, mula sa susunod na hakbang ay hindi ko ilalarawan ang bawat aksyon nang detalyado, ngunit kung saan maaaring may mga paghihirap, tiyak na ipapaliwanag ko.

Madalas akong gumamit ng mga alias, kaya ang mga pagdadaglat na ginamit sa bahaging ito ay ipinapakita dito:

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

Handa na ang plano, pwede na tayong magsimula! At siyempre, huwag kalimutan ang tungkol sa "magic Tab" (Tingnan ang Bahagi 1).

Hakbang 4

Diving Down the Termux:API Rabbit Hole

API, kung magkano sa salitang ito para sa puso ng coder ang nagsanib

Kung hindi namin hawakan ang paksa ng Termux:API, kung gayon ang lahat ng aming mga hakbang ay maaaring mabawasan sa isang simpleng muling pagsasalaysay ng ilang brochure tulad ng "Linux for Dummies," tulad ng wastong nabanggit sa mga komento sa unang bahagi.

Una, i-install natin ang Termux:API mula sa Google Play Market (pagkatapos ay hindi masakit na i-restart ang Termux):

Hakbang-hakbang na Termux (Bahagi 2)

Susunod na kailangan nating i-install ang API package sa Termux console:

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

Para sa mga eksperimento na gumagamit ako ng Android 5.1.1, para sa mga may-ari ng Android 7 kailangan mong 'protektahan' ang Termux:API sa pamamagitan ng pagpunta sa Mga Setting > Mga Protektadong App, kung hindi man ay mga tawag sa API tulad ng termux-battery-status, ay magyeyelo. (Cm. proyekto wiki)

Ngayon ay oras na upang masusing tingnan ang mga nakuhang kakayahan. Ang pinakabago at detalyadong paglalarawan ng Termux:API ay matatagpuan sa proyekto wiki. Susubukan kong piliin ang pinaka-visual at kawili-wili, na magpapahintulot sa akin na maging mas mahusay sa independiyenteng trabaho sa hinaharap.

Ilang halimbawa ng Termux:API

  • termux-battery-status
    Ibinabalik ang katayuan ng baterya
    Hakbang-hakbang na Termux (Bahagi 2)
  • termux-liwanag
    Itinatakda ang liwanag ng screen mula 0 hanggang 255
    Hakbang-hakbang na Termux (Bahagi 2)
  • termux-toast
    Nagpapakita ng pansamantalang pop-up na notification
    Hakbang-hakbang na Termux (Bahagi 2)
  • termux-torch
    May kasamang flashlight
    Hakbang-hakbang na Termux (Bahagi 2)
  • termux-wifi-scaninfo
    Ibinabalik ang impormasyon tungkol sa huling pag-scan ng mga Wi-Fi network
    Hakbang-hakbang na Termux (Bahagi 2)

Madaling makita na ang mga return value ay mga string, mga diksyunaryo, mga listahan ng mga diksyunaryo, karaniwang mga uri ng data na mahusay na gumagana sa Python, kaya ang susunod na hakbang ay i-set up ito.

Hakbang 5

I-install ang Python at nano

Upang i-install ang Python, isulat sa terminal:

updg
apt install python
apt install python2

Ngayon mayroon kaming Python 2 at 3 na naka-install.

Habang nagtatrabaho sa artikulong ito, natuklasan ko ang isa pang text editor, nano, na mas gusto ko kaysa sa vim, i-install natin ito:

apt install nano

Mas madaling gamitin ito kaysa sa vim, at ang nano ay may mas madaling gamitin na interface. Sa isang Android device, mas maginhawa pa rin ang vim.

HelloWorld sa Python sa Termux

Sa pangkalahatan, posible itong gawin nang wala ang puntong ito, ngunit ang pag-install ng Python sa Termux at hindi pagsusulat ng HelloWorld, sa palagay ko, ay masamang asal.

Ang layunin ko ay hindi turuan ang sinumang Python, kaya ang mga hindi nakakaalam ay maaaring kopyahin lamang ang code (o simulan ang pag-aaral sa kanilang sarili, sa kabutihang palad mayroong sapat na literatura), at ang mga nakakaalam ay maaaring maglilok ng isang bagay sa kanilang sarili. At sa tahimik, ipapakita ko rin sa iyo ang isang paraan upang magpasok ng teksto sa terminal nang walang 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)

Hakbang-hakbang na Termux (Bahagi 2)

Kung sa panahon ng proseso ng pag-input ay hindi mo napansin ang isang error at pinindot na ang Enter, kung gayon hindi ka makakapunta sa linya sa itaas; upang gawin ito, tapusin ang pagpasok sa pamamagitan ng pagpindot sa Ctrl + D (maaari mo ring matakpan ang Ctrl + Z) at ulitin ang lahat sa simula. Dahil ginamit namin ang '>' ang file ay ganap na muling isusulat. Para sa kadahilanang ito, hindi ko inirerekomenda ang paggamit ng paraan ng pag-input na ito maliban kung sigurado kang isusulat mo kaagad ang code nang walang mga error.

Hakbang 6

Mga script ng Bash

Ang mga script ng Bash ay isang mahusay na paraan upang i-automate ang iyong trabaho sa terminal. Ang script ay isang file na may extension na .sh (ang extension ay opsyonal) na naglalaman ng isang hanay ng mga terminal command, na ang ilan ay napag-aralan na namin. Dito listahan ng karamihan sa mga utos, lahat ay dapat gumana, ngunit mangyaring tandaan na ito ay isang listahan para sa "pang-adulto" na Linux, at hindi para sa Termux, ngunit lamang Mahusay na bagay sa mga script ng bash.

Gamit ang mga script, maaari mong i-automate ang halos lahat ng monotonous na pagkilos. Sumulat tayo ng isang simpleng script ng bash na naglalabas ng halaga mula sa variable na nilikha nito, gagamitin ko muli ang pusa, maaari kang gumamit ng isang normal na editor ng teksto, at ang mga taong gustong magsanay sa kanilang sarili ay maaaring gumamit ng echo.

cat >test.sh

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

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

# Ctrl + D

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

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

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

Hakbang-hakbang na Termux (Bahagi 2)

Bash script na may Termux:API

Sumulat tayo ng isang bagay na naiiba sa kilalang HelloWorlds, ngunit walang silbi. Ang aming script ay:

  1. magsagawa ng kahilingan sa termux-battery-status API
  2. i-save ang natanggap na data sa file test.txt
  3. ipakita ang data mula sa isang file sa screen
  4. isagawa ang dating nakasulat na hello-world.py program
  5. Isulat ang data na natanggap mula sa programa sa file test.txt
  6. ipakita ang data mula sa isang file sa screen
  7. ilipat ang data mula sa isang file patungo sa clipboard
  8. ipakita ang mga nilalaman ng clipboard
  9. magpakita ng pop-up na mensahe na may data mula sa clipboard

Una, gumawa tayo ng folder para sa trabaho at kopyahin ang hello-world.py doon bilang test.py, likhain ang mga file na test.sh at test.txt sa folder na ito:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Ngayon, sa anumang maginhawang paraan, isulat ang script sa test.sh file:

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

Ngayon ay nasa folder ng bashscript na sinusulat namin ./test.sh Nakikita namin sa terminal sa isang Android device:

Hakbang-hakbang na Termux (Bahagi 2)

Kaya sinulat namin ang binalak na script ng bash. Maaari mong palabnawin ito sa pamamagitan ng pag-output ng impormasyon sa pagpapatupad ng bawat aksyon sa console (gamit ang echo), iiwan ko ito para sa mga mambabasa.

Hakbang 7

Gumawa tayo ng isang bagay na kapaki-pakinabang

Medyo kapaki-pakinabang

Bumuo tayo ng mga tuntunin ng sanggunian
Pagkatapos ng paglunsad, ang application ay dapat maglagay ng random na linya mula sa isang file sa clipboard at abisuhan ang tungkol dito gamit ang isang pop-up na mensahe.

Kumuha tayo ng isang bash script bilang batayan at kunin ang isang random na linya mula sa isang file gamit ang isang Python subroutine. Gumawa tayo ng plano para sa script:

  1. Patakbuhin ang subroutine
  2. Ilipat ang resulta ng subroutine sa clipboard
  3. Magpakita ng isang pop-up na mensahe

Magpasya tayo sa mga pangalan ng direktoryo at mga file ng aplikasyon:

  • rndstr folder sa home directory
    • source - ang file kung saan kami kukuha ng mga linya
    • rndstr.py - isang subroutine na nagpi-print ng random na linya mula sa source file papunta sa console
    • rndstr.sh - script file

Lumilikha kami ng direktoryo ng application at lumipat dito at lumikha ng mga file doon.

Ang unang dalawang punto ng script plan ay maaaring pagsamahin sa pamamagitan ng pipeline, bilang resulta, gamit ang Termux:API na nakukuha namin:

#!/bin/bash

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

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

Sa source file maaari kang maglagay ng anumang teksto na lohikal na nahahati sa mga linya, nagpasya akong maglagay ng mga aphorism:

Listahan ng source file

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

Ang kailangan lang nating gawin ay lumikha ng subroutine na kumukuha ng random na string mula sa source file.
Ilarawan natin ang algorithm ng subroutine:

  1. Buksan ang source file
  2. Binibilang ang bilang ng mga linya sa isang bukas na file
  3. Isara ang file (walang saysay na panatilihin itong bukas nang masyadong mahaba)
  4. Bumuo ng random na integer sa loob ng bilang ng mga linya sa source file
  5. Buksan ang source file
  6. Nagpapakita kami ng isang linya sa ilalim ng numero ng nabuong numero
  7. Pagsasara ng file

Ipatupad natin ang algorithm sa Python (nagsusulat ako sa ilalim ng 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  #  закрываем файл

Matapos malikha at maisulat ang mga file, kailangan mong magbigay ng mga karapatan sa pagpapatupad sa file rndstr.sh, at lumikha ng isang alias para sa mabilis na paglulunsad.

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

Ngayon sa pamamagitan ng pagpasok sa terminal rnst makakatanggap kami ng random na aphorism sa clipboard, na, halimbawa, ay maaaring gamitin sa pagsusulatan.

Kaya nagsulat kami ng kahit na isang bagay na kapaki-pakinabang. Medyo kapaki-pakinabang.

ps

Sa huling hakbang, sadyang hindi ako nagbigay ng mga screenshot at hindi ko sinuri nang detalyado ang ilan sa mga aksyon, na naglalarawan lamang ng mga nilalaman ng mga file upang ang mga mambabasa ay magkaroon ng pagkakataon na magtrabaho nang mag-isa.

Sa tingin ko sulit na tapusin itong "Termux step by step". Siyempre, ito pa lang ang mga unang hakbang, ngunit ngayon ay maaari ka nang sumulong nang mag-isa.

Sa una, binalak kong ipakita sa seryeng ito kung paano gamitin ang nmap, sqlmap, ngunit kahit na wala ako marami nang mga artikulo sa paksang ito. Kung gusto mong ipagpatuloy ko ang seryeng "Termux step by step", may survey sa ibaba at sa mga komento maaari kang magmungkahi kung ano pa ang isusulat.

Ang mga rehistradong user lamang ang maaaring lumahok sa survey. Mag-sign in, pakiusap

Ipagpatuloy ang "Termux hakbang-hakbang"?

  • Oo

  • Hindi

2 user ang bumoto. Walang mga abstention.

Pinagmulan: www.habr.com

Magdagdag ng komento