Termux soli pa solim (2. daļa)

No es pieminēju, ka var iegūt labumu no nodokļiem, pārvācoties uz ciemu. Internetā ir Mēs iepazināmies ar pamata Termux komandas, iestatījām SSH savienojumu ar datoru, apguvām alias izveidi un instalējām dažas noderīgas utilītas. Šoreiz mēs dosimies vēl tālāk, mēs ar jums:

  • uzzināsim par Termux:API
  • uzstādÄ«sim Python un nano, kā arÄ« uzrakstÄ«sim 'Hello, world!' Python valodā
  • uzzināsim par bash skriptiem un uzrakstÄ«sim skriptu, izmantojot Termux:API
  • izmantojot bash skriptu, Termux:API un Python, uzrakstÄ«sim vienkārÅ”u programmu

Tā kā tagad mēs saprotam, ko dara ievadÄ«tās komandas, no Ŕī brīža es tik sÄ«ki nepaskaidroÅ”u katru darbÄ«bu, bet tur, kur varētu bÅ«t grÅ«tÄ«bas, es noteikti sniegÅ”u skaidrojumus.

Es bieži izmantoju alias, tāpēc Å”ajā daļā izmantotās saÄ«sinājumi ir parādÄ«ti Å”eit:

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

Plāns gatavs, varam sākt! Un protams, neaizmirstiet par 'burvīgo Tab' (Skat. 1. daļu).

4. solis

Ienirstam Termux:API truŔu caurumā

Cik daudz Å”ajā vārdā sirdÄ« kodētāja saplÅ«st

Ja nerunājam par Termux:API, tad visus mÅ«su soļus varētu samazināt lÄ«dz vienkārÅ”am kādas broŔūras, piemēram, 'Linux priekÅ” iesācējiem', pārsakam, kā tika pareizi norādÄ«ts komentāros pie pirmās daļas.

Vispirms uzstādīsim Termux:API no Google Play tirgus (pēc tam noderētu pārstartēt Termux):

Termux soli pa solim (2. daļa)

Pēc tam mums jāinstalē API pakotne Termux konsolē:

updg # Neaizmirstiet par alias
apt install termux-api

Eksperimentiem es izmantoju Android 5.1.1, bet Android 7 Ä«paÅ”niekiem jā'pasargā' Termux: API, dodoties uz ā€˜IestatÄ«jumi’ > ā€˜Aizsargātās lietotnes’, pretējā gadÄ«jumā API izsaukumi, piemēram, termux-battery-status, iestrēgs. (Skat. projekta wiki)

Tagad derētu tuvāk iepazÄ«ties ar iegÅ«tajām iespējām. Visjaunāko un detalizētāko aprakstu par Termux:API var atrast uz projekta wiki. Es centīŔos izvēlēties visredzamākos un interesantākos piemērus, kas ļaus apgÅ«t prasmes turpmākai patstāvÄ«gai darbÄ«bai.

Kā diski Termux:API

  • termux-battery-status
    Atgriež baterijas stāvokli
    Termux soli pa solim (2. daļa)
  • termux-brightness
    Iestata ekrāna spilgtumu no 0 līdz 255
    Termux soli pa solim (2. daļa)
  • termux-toast
    Rāda īslaicīgu izsistomu paziņojumu
    Termux soli pa solim (2. daļa)
  • termux-torch
    Ieslēdz lukturīti
    Termux soli pa solim (2. daļa)
  • termux-wifi-scaninfo
    Atgriež pēdējā Wi-Fi tÄ«klu skenēŔanas informāciju
    Termux soli pa solim (2. daļa)

Nav grÅ«ti pamanÄ«t, ka atgrieztās vērtÄ«bas ir virknes, vārdnÄ«cas, vārdnÄ«cu saraksti, tātad datu tipi, ar kuriem Python lieliski strādā, tādēļ nākamais solis bÅ«s tā instalēŔana.

5. solis

Instalēsim Python un nano

Lai instalētu Python, terminālī rakstām:

updg
apt install python
apt install python2

Tagad mums ir instalēti gan Python 2, gan 3.

Rakstot Å”o rakstu, es atklāju vēl vienu teksta redaktoru nano, kas man patÄ«k vairāk nekā vim, tāpēc instalēsim to:

apt install nano

To ir vieglāk lietot nekā vim, un nano ir draudzīgāks interfeiss. Android ierīcē tomēr ir ērtāk izmantot vim.

HelloWorld uz Python Termuxā

Lielā mērā Å”o punktu varēja izlaist, bet uzstādÄ«t Python Termuxā un neuzrakstÄ«t HelloWorld, manuprāt, bÅ«tu nepiedienÄ«gi.

Es neizvirzu mērÄ·i iemācÄ«t kādam Python, tāpēc nezinātāji var vienkārÅ”i nokopēt kodu (vai sākt mācÄ«ties paÅ”i, par laimi, literatÅ«ras ir pietiekami daudz), bet zinātāji var arÄ« paÅ”i kaut ko uzrakstÄ«t. Un es ā€žpavisam klusiā€ vēl parādīŔu, kā ievadÄ«t tekstu terminālā bez redaktora.

cat >hello-world.py     
# Ja neizvēlas avotu (atgādinu, ka cat 1.txt > 2.txt)
# tad cat ņems datus no standarta ievades plūsmas,
# vienkārŔi runājot, no tastatūras ievadītā.

str = 'Hello, world!' # pieŔķiram mainÄ«gajam str vērtÄ«bu "Hello, world!"
print (str) # izvadām uz ekrāna mainīgā str vērtību

# Ctrl + D, lai pabeigtu ievadi un saglabātu failu (hello-world.py)

py hello-world.py # palaižam failu (py ir alias no python)

Termux soli pa solim (2. daļa)

Ja ievades laikā neesat pamanÄ«jis kļūdu un jau nospiedāt Enter, tad pāriet uz iepriekŔējo rindu neizdosies, tāpēc pabeidziet ievadi, nospiežot Ctrl + D (var pat pārtraukt ar Ctrl + Z) un atkārtojiet visu no sākuma. Tā kā mēs izmantojām '>', fails tiks pilnÄ«bā pārrakstÄ«ts. Tāpēc neiesaku izmantot Ŕādu ievades metodi, ja neesat pārliecināts, ka uzreiz uzrakstÄ«siet kodu bez kļūdām.

6. solis

Bash skripti

Bash skripti ir lielisks veids, kā automatizēt darbu ar termināli. Skripts ir fails ar paplaÅ”inājumu .sh (paplaÅ”inājums nav obligāts), kas satur komandu kopumu, no kurām daļu mēs jau esam izpētÄ«juÅ”i. LÅ«k, vairākuma komandu saraksts, viss vajadzētu strādāt, bet ņemiet vērā, ka tas ir saraksts ā€žpieauguÅ”aā€ Linuxa versijai, nevis Termuxam, taču tas ir vienkārÅ”i lielisks materiāls par bash skriptiem.

Izmantojot skriptus, var automatizēt praktiski visas monotonās darbÄ«bas. UzrakstÄ«sim vienkārÅ”u bash skriptu, kas izvada vērtÄ«bu no sev radÄ«tās mainÄ«gās, es atkal izmantoÅ”u cat, bet jÅ«s varat izmantot normālu teksta redaktoru, bet tie, kas vēlas pārbaudÄ«t savas prasmes, var izmantot echo.

cat >test.sh

export str="Sveiks, Habr!"
# export izveido mainīgo str
# un pieŔķir tam vērtÄ«bu "Sveiks, Habr!"
# Neievietojiet atstarpes pirms un pēc ā€˜=’

echo $str # Lai piekļūtu mainÄ«gajiem, pirms tiem jāliek ā€˜$’ 

# Ctrl + D

# ./test.sh, lai palaistu skriptu, bet, ja to tagad izdarīsim, būs kļūda
# Lai novērstu kļūdu, jāpadara fails test.sh izpildāms

chmod +x test.sh
# chmod maina piekļuves tiesības (+ pievienot / - noņemt)
# ā€˜+x’ nozÄ«mē, ka mēs padarām failu izpildāmu

./test.sh # Uzsākam mūsu skripta izpildīŔanu

Termux soli pa solim (2. daļa)

Bash skripts ar Termux:API

UzrakstÄ«sim jau ko atŔķirÄ«gu no labi zināmajiem HelloWorld, bet tikpat bezjēdzÄ«gu. MÅ«su skripts bÅ«s:

  1. izpildīt API pieprasījumu termux-battery-status
  2. saglabāt iegūtos datus failā test.txt
  3. izvadīt datus no faila ekrānā
  4. izpildīt iepriekŔ uzrakstīto programmu hello-world.py
  5. iegūtos datus no programmas ierakstīt failā test.txt
  6. izvadīt datus no faila ekrānā
  7. pārsūtīt datus no faila uz starpliktuvi
  8. izvadīt ekrānā starpliktuves saturu
  9. izvadÄ«t uznirstoÅ”o ziņojumu ar datiem no starpliktuves

Vispirms izveidosim mapi darbam un kopēsim tur hello-world.py kā test.py, izveidosim Å”ajā mapē failus test.sh un test.txt:

mkdir bashscript

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

cd bashscript/

touch test.sh test.txt # touch izveido failus

chmod +x test.sh

Tagad jebkurā ērtā veidā ierakstīsim skriptu failā 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

Tagad atrodamies mapē bashscript, rakstām ./test.sh novērojam terminālī mūsu Android ierīcē:

Termux soli pa solim (2. daļa)

LÅ«k, mēs esam uzrakstÄ«juÅ”i plānoto bash skriptu. Varam bagātināt tā izvadi ar informāciju par katra darbÄ«bas izpildi (izmantojot echo), to atstāŔu lasÄ«tājiem.

Sol 7

Izdarīsim kaut ko noderīgu

Relatīvi noderīgi

Izstrādāsim tehnisko uzdevumu
Programmai pēc palaiÅ”anas jāievieto nejauÅ”a rinda no faila starpliktuvē un jāinformē par to ar uznirstoÅ”o ziņojumu.

Kā pamatu ņemsim bash skriptu, nejauÅ”u rindu no faila iegÅ«sim ar Python apakÅ”programmas palÄ«dzÄ«bu. Izveidosim skripta darba plānu:

  1. Palaist apakŔprogrammu
  2. PārraidÄ«t apakÅ”programmas darba rezultātu starpliktuvē
  3. IzvadÄ«t uznirstoÅ”o ziņu

Noteiksim lietojumprogrammas direktoriju un failu nosaukumus:

  • mape rndstr mājas direktorijā
    • source — fails, no kura ņemsim virknes
    • rndstr.py — apakÅ”programma, kas konsolē izvada nejauÅ”u virkni no faila source
    • rndstr.sh — skriptu fails

Izveidojam lietojumprogrammas direktoriju un, pārvietojoties tajā, izveidojam tur failus.

Pirmos divus skripta plāna punktus var apvienot cauruli, rezultātā, izmantojot Termux:API, iegūstam:

#!/bin/bash

python ~/rndstr/rndstr.py | termux-clipboard-set # 1 Šø 2 ŠæŃƒŠ½ŠŗŃ‚Ń‹ плана работы

termux-toast "OK" # 3 ŠæŃƒŠ½ŠŗŃ‚. ВывоГим Š²ŃŠæŠ»Ń‹Š²Š°ŃŽŃ‰ŠµŠµ сообщение "ŠžŠš"

Failā source jūs varat ievietot jebkuru tekstu, loģiski sadalītu pa rindām, es izlēmu ievietot aforismus:

Faila source saraksts

Sirsnība nav patiesība. L. Lavels
Pacietība un atturība. Epikts
Godīgi ir tikai tas, kas ir bezintereses. J. Labriērs
Esi saprātīgi drosmīgs. B. Grasians
Laba īpaŔība ir labestība, nevis skaistums. G. Geins
Lieliem darbiem nepiecieŔama neatlaidīga noturība. F. Volters
Ja vēlies, lai tevi vienmēr apmierinātu, kalpo pats sev. B. Franklins
Pārlieku pazemība ir neviens cits kā slēpta lepnuma. A. Šenjē
Ļoti gudriem cilvēkiem sāk neuzticēties, ja redz viņu apmulsumu. F. Nīče
Trūkumam ir norāde uz līdzekļu trūkumu, nevis uz godības trūkumu. D. Bokačs
Jākļūst uzmanīgam, lai pazemību nenovestu līdz pazemojumam. A. Bakihanovs
Kas atsakās no daudz, var sev atļaut daudz. J. Šardons
Kad mums maksā par godīgu rīcību, to mūs atņem. N. Šamfors
Nesaņemt vispār - nav biedējoÅ”i, bet zaudēt iegÅ«to ir nepatÄ«kami. Klaudijs Elijans
Vieglāk paciest to, ko mēs nevaram labot. Horācijs
Tu nogurst gaidīt, bet cik sliktāk būtu, ja gaidīŔana kļūtu nevajadzīga. B. Šovs
Viss nāk laikā, ja cilvēki prot gaidīt. F. Rable
Ar savu pacietību mēs varam sasniegt vairāk nekā ar spēku. E. Berks
Jāprot paciest to, ko nevar izvairīties. M. Montēns
Kas drosmīgs darījumā, tas vārdu nebaidīsies. Sofokls
Es nemīlu cīnīties, es mīlu uzvarēt. B. Šovs
SadzÄ«ts un piespiests pie sienas kaÄ·is pārvērÅ”as par tīģeri. M. Servants
Godīgs cilvēks nesekos citu pēdām. Kungs Konfūcijs
Liels prāts izrādīs savu spēku ne tikai spējā domāt, bet arī dzīvot. R. Emersons
Slava ir prece, kas nav izdevīga. Dārga, bet slikti saglabājas. O. Balzaks
Savaldība un piemērotība sarunās ir dārgākas par izteiksmīgumu. F. Bēkons
Kas nevar klusēt, tas nespēj arī runāt. Senekas Jaunākais
Labi mani ieradumi sastāv no mazām upurēŔanām. F. Čestervilds
Labais cilvēks nav tas, kurÅ” prot darÄ«t labu, bet tas, kurÅ” neprot darÄ«t ļaunu. V. Kļičevskis
Nepateikties nenovērÅ”amiem spriedumiem! AugustÄ«ns
Neko pārmērīgu!

Mums joprojām jāizveido apakÅ”programma, kas izvelk nejauÅ”u rindiņu no faila source.
Aprakstīsim apakŔprogrammas darbības algoritmu:

  1. Atveram failu source
  2. Saskaitām rindiņu skaitu atvērtajā failā
  3. Aizveram failu (nav jātur lieki atvērts ilgāk)
  4. Ä¢enerējam nejauÅ”u veselu skaitli, kas atbilst faila source rindu skaitam
  5. Atveram failu source
  6. Izvade rindai ar ģenerētā skaitļa numuru
  7. Aizveram failu

Realizējam algoritmu Python valodā (rakstu zem Python 3.7):

import random  #  importējam nejauÅ”u skaitļu Ä£enerēŔanai
import os  #  ceļa iegūŔanai

path = os.path.abspath(__file__)  #  iegūstam absolūto ceļu līdz failam rndstr.py
path = os.path.dirname(path)  #  pārveidojam par ceļu uz direktoriju
path = path  + 'src/source'  #  pārveidojam par ceļu uz failu source

f = open(path)  #  atveram failu
i = 0  #  nullējam skaitītāju
for str in f: i+=1  #  skaitām faila rindas
f.close  #  aizveram failu

j = int(round(i * random.random()))  #  Ä£enerējam veselu nejauÅ”u skaitli no 0 lÄ«dz i

f = open(path)  #  atveram failu
i = 0  #  nullējam skaitītāju
for str in f:  #  pārstaigājam cauri faila rindām
    if i == j:  #  ja rindas skaitītājs atbilst ģenerētajam skaitlim
        print (str, end='')  #  izvadām rindu bez pārejas uz jauno rindu
        break  #  izejam no cikla
    i+=1  #  palielinām skaitītāju par 1
f.close  #  aizveram failu

Pēc tam, kad faili ir izveidoti un ierakstÄ«ti, nepiecieÅ”ams pieŔķirt izpildes tiesÄ«bas failam rndstr.sh, un izveidot alias ātrai palaiÅ”anai.

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

Tagad, ievadot terminālÄ« rnst , mēs saņemsim nejauÅ”u aforismu, ko var izmantot, piemēram, sarakstēs.

Mēs esam uzrakstÄ«juÅ”i kaut ko noderÄ«gu. SalÄ«dzinoÅ”i noderÄ«gu.

P.S.

Es apzināti pēdējā solÄ« neiekļāvu ekrānŔāviņus un neanalizēju detalizēti dažas darbÄ«bas, aprakstot tikai failu saturu, lai lasÄ«tājiem bÅ«tu iespēja strādāt patstāvÄ«gi.

Å ajā ciklā "Termux soli pa solim", domāju, ir vērts noslēgt. Protams, tas ir tikai pirmie soļi, bet tagad jÅ«s varat virzÄ«ties uz priekÅ”u paÅ”i.

Sākotnēji es plānoju parādÄ«t, kā lietot nmap, sqlmap, taču Å”o tēmu jau ir daudz rakstu bez manis. Ja ir vēlēŔanās, lai es turpinātu ciklu "Termux soli pa solim", tad zemāk ir anketa, un komentāros varat piedāvāt, par ko vēl rakstÄ«t.

Tikai reģistrētie lietotāji var piedalīties aptaujā. Pieteikties, lūdzu.

Turpināt "Termux soli pa solim"?

  • Jā

  • Nē

BalsojuÅ”i 2 lietotāji. Nav atturējuÅ”os.

Avots: habr.com

Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster