Termux krok po kroku (Część 2)

W poprzedniej części Poznaliśmy podstawowe komendy Termux, skonfigurowaliśmy połączenie SSH z komputerem, nauczyliśmy się tworzyć aliasy i zainstalowaliśmy kilka przydatnych narzędzi. Tym razem zrobimy krok dalej i zrobimy razem:

  • dowiedz się o Termux:API
  • zainstalujemy Pythona i nano, a także napiszemy „Witaj, świecie!” w Pythonie
  • dowiedz się o skryptach bash i napiszemy skrypt wykorzystujący Termux:API
  • używając skryptu bash, Termux:API i Pythona napiszemy prosty program

Teraz, gdy rozumiemy, co robią wprowadzane komendy, od następnego kroku nie będę tak szczegółowo opisywał każdego działania, ale tam, gdzie mogą wystąpić trudności, z pewnością wyjaśnię.

Często stosuję aliasy, dlatego używane w tej części skróty zostały tu pokazane:

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

Plan gotowy, można zaczynać! I oczywiście nie zapominaj o „magicznej strzałce Tab” (Zob. Część 1).

Krok 4

Zanurzamy się w królika Termux:API

Ileż to w tym słowie w jednym sercu kodera się łączy

Gdyby nie poruszyć tematu Termux:API, wszystkie nasze kroki można by było sprowadzić do prostego streszczenia jakiejś ulotki typu „Linux dla opornych”, co zostało słusznie zauważone w komentarzach do pierwszej części.

Najpierw zainstaluj Termux:API z Google Play Marketu (potem warto zrestartować Termux):

Termux krok po kroku (Część 2)

Następnie musimy zainstalować pakiet API w konsoli Termux:

updg # Nie zapominaj o aliasach
apt install termux-api

Do eksperymentów używam Androida 5.1.1, dla właścicieli Androida 7 trzeba „zabezpieczyć” Termux:API, wchodząc w ‚Ustawienia’ > ‚Zabezpieczone aplikacje’, w przeciwnym razie wywołania API, takie jak termux-battery-status, będą się zawieszać. (Zob. wiki projektu)

Teraz warto bliżej poznać zdobyte możliwości. Najświeższy i najdokładniejszy opis Termux:API można znaleźć na wiki projektu. Postaram się wybrać najjaśniejsze i najbardziej interesujące, co pozwoli nabrać wprawy do samodzielnej pracy w przyszłości.

Kilka przykładów Termux:API

  • termux-battery-status
    Zwraca stan baterii
    Termux krok po kroku (Część 2)
  • termux-brightness
    Ustala jasność ekranu od 0 do 255
    Termux krok po kroku (Część 2)
  • termux-toast
    Wykazuje tymczasowe powiadomienie wyskakujące
    Termux krok po kroku (Część 2)
  • termux-torch
    Włącza latarkę
    Termux krok po kroku (Część 2)
  • termux-wifi-scaninfo
    Zwraca informacje o ostatnim skanowaniu sieci Wi-Fi
    Termux krok po kroku (Część 2)

Nie trudno zauważyć, że zwracane wartości to ciągi, słowniki, listy słowników, ogólnie typy danych, z którymi Python świetnie sobie radzi, więc następnym krokiem będzie jego zainstalowanie.

Krok 5

Zainstalujemy Pythona i nano

Aby zainstalować Pythona, wpisujemy w terminalu:

updg
apt install python
apt install python2

Teraz mamy zainstalowanych Pythona w wersjach 2 i 3.

Podczas pracy nad artykułem odkryłem kolejny edytor tekstu nano, który bardziej mi się spodobał niż vim, więc zainstalujmy go:

apt install nano

Jest prostszy w użyciu niż vim, a nano ma bardziej przyjazny interfejs. Na urządzeniu z Androidem jednak wygodniej jest korzystać z vima.

HelloWorld w Pythonie w Termux

Generalnie można by się bez tego obejść, ale postawić Pythona w Termux i nie napisać HelloWorld, moim zdaniem to faux pas.

Nie mam na celu nauczyć kogokolwiek Pythona, więc ci, którzy nie wiedzą, mogą po prostu skopiować kod (lub zacząć uczyć się samodzielnie, bo literatury jest pod dostatkiem), a ci, którzy wiedzą, mogą sami coś stworzyć. A ja „pod szum” jeszcze pokażę, jak wprowadzać tekst w terminalu bez edytora.

cat >hello-world.py     
# Jeśli nie określisz źródła (przypominam cat 1.txt > 2.txt)
# to cat będzie pobierał dane z domyślnego strumienia wejściowego,
# prościej mówiąc, z klawiatury.

str = 'Hello, world!' # przypisujemy zmiennej str wartość "Hello, world!"
print(str) # wyświetlamy na ekranie wartość zmiennej str

# Ctrl + D aby zakończyć wprowadzanie i zapisać plik (hello-world.py)

py hello-world.py # uruchamiamy plik (py to alias dla pythona)

Termux krok po kroku (Część 2)

Jeśli w trakcie wprowadzania nie zauważyłeś błędu i już nacisnąłeś Enter, nie będziesz mógł przejść do poprzedniego wiersza, dlatego zakończ wprowadzanie naciskając Ctrl + D (możesz także przerwać Ctrl + Z) i powtórz wszystko od nowa. Ponieważ użyliśmy '>', plik zostanie całkowicie nadpisany. Z tego powodu nie zalecam używania takiej metody wprowadzania, jeśli nie jesteś pewien, że od razu napiszesz kod bez błędów.

Krok 6

Skrypty Bash

Skrypty Bash to doskonały sposób na automatyzację pracy w terminalu. Skrypt to plik z rozszerzeniem .sh (rozszerzenie nie jest obowiązkowe) zawierający zestaw poleceń terminala, z których część już poznaliśmy. Oto lista większości poleceń, wszystko powinno działać, ale zwróć uwagę, że to lista dla „dorosłego” Linuxa, a nie dla Termux’a, a oto po prostu wspaniały materiał na temat skryptów bash.

Dzięki skryptom można zautomatyzować praktycznie wszystkie monotonne czynności. Napiszemy prosty skrypt bash, który wyświetli wartość z już utworzonej przez niego zmiennej; ponownie skorzystam z cat’a, ale ty możesz użyć zwykłego edytora tekstu, a szczególnie chętni mogą spróbować użyć echo.

cat >test.sh

export str="Cześć, Habr!"
# export tworzy zmienną str
# i przypisuje jej wartość "Cześć, Habr!"
# Nie umieszczaj spacji przed i po ‘=’

echo $str # Aby odwołać się do zmiennych, przed nimi należy postawić ‘$’

# Ctrl + D

# .\/test.sh aby uruchomić skrypt, ale jeśli to zrobisz teraz, wystąpi błąd
# aby pozbyć się błędu, musisz nadać plikowi test.sh uprawnienia do wykonania

chmod +x test.sh
# chmod zmienia prawa dostępu (+ dodać / - usunąć)
# ‘+x’ oznacza, że nadajemy plikowi uprawnienia do wykonania

.\/test.sh # Uruchamiamy nasz skrypt

Termux krok po kroku (Część 2)

Skrypt Bash z Termux:API

Napiszmy coś różniącego się od słynnych HelloWorld’ów, ale równie nieprzydatnego. Nasz skrypt będzie:

  1. dokonywać zapytania API termux-battery-status
  2. zapisywać uzyskane dane do pliku test.txt
  3. wyświetlać dane z pliku na ekranie
  4. wykonywać wcześniej napisaną program hello-world.py
  5. uzyskane od programu dane zapisywać do pliku test.txt
  6. wyświetlać dane z pliku na ekranie
  7. przenieść dane z pliku do schowka
  8. wyświetlać na ekranie zawartość schowka
  9. wyświetlać powiadomienie z danymi ze schowka

Najpierw utwórzmy folder roboczy i skopiujmy do niego hello-world.py jako test.py, stworzymy w tym folderze pliki test.sh i test.txt:

mkdir bashscript

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

cd bashscript/

touch test.sh test.txt # touch tworzy pliki

chmod +x test.sh

Teraz w jakikolwiek wygodny sposób zapiszmy skrypt do pliku 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

Teraz, będąc w folderze bashscript, piszemy .\/test.sh obserwujemy w terminalu na urządzeniu z Androidem:

Termux krok po kroku (Część 2)

Stworzyliśmy zaplanowany skrypt bash. Możemy urozmaicić jego działanie, wyświetlając w konsoli informacje na temat wykonania każdego działania (za pomocą echo), to pozostawię czytelnikom.

Krok 7

Zróbmy coś użytecznego

Relatywnie użyteczne

Sformułujmy wymagania techniczne
Aplikacja po uruchomieniu ma umieścić losowy wiersz z pliku w schowku oraz powiadamiać o tym powiadomieniem.

Na podstawie skryptu bash, losowy wiersz z pliku będziemy wydobywać przy pomocy podprogramu w Pythonie. Opracujemy plan działania skryptu:

  1. Uruchomić podprogram
  2. Przenieś wynik działania podprogramu do schowka
  3. Wyświetl komunikat pop-up

Zdefiniujmy nazwy katalogu i plików aplikacji:

  • folder rndstr w katalogu domowym
    • source — plik, z którego będziemy pobierać linie
    • rndstr.py — podprogram wypisujący na konsolę losowy ciąg z pliku source
    • rndstr.sh — plik skryptu

Tworzymy katalog aplikacji, a następnie, przeszliśmy do niego, tworzymy tam pliki.

Pierwsze dwa punkty planu skryptu można połączyć potokiem, ostatecznie, korzystając z Termux:API uzyskujemy:

#!/bin/bash

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

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

Do pliku source możesz umieścić dowolny tekst logicznie podzielony na wiersze, postanowiłem umieścić aforyzmy:

Listing pliku source

Szczerość nie jest prawdą. L. Lavelle
Cierp i powstrzymuj się. Epiktet
Tylko to, co jest bezinteresowne, jest szlachetne. J. La Bruyère
Bądź rozważnie odważny. B. Gracjan
Dobroć jest lepsza niż piękno. G. Heine
Do wielkich czynów potrzebna jest nieustępliwa konsekwencja. F. Voltaire
Jeśli chcesz, aby ludzie ci się podobali, służ sobie sam. B. Franklin
Nadmierna skromność to nic innego jak ukryta pycha. A. Chenier
Bardzo inteligentni ludzie zaczynają budzić nieufność, gdy widać ich zakłopotanie. F. Nietzsche
Bieda wskazuje na brak środków, a nie na brak szlachetności. D. Boccaccio
Należy unikać skromności prowadzącej do upokorzenia. A. Bakihanov
Kto wyrzeka się wielu rzeczy, może sobie wiele pozwolić. J. Chardon
Gdy płacą nam za szlachetny czyn, odbierają nam go. N. Chamfort
Nie straszne jest nic nie dostać, lecz zasmuca utrata tego, co się otrzymało. Klaudiusz Elian
Łatwiej jest cierpliwie znosić to, czego nie możemy naprawić. Horacy
Męczy cię czekanie, ale jakże gorsze byłoby czekanie, gdyby nie było na co czekać. B. Shaw
Wszystko przychodzi na czas, jeśli ludzie potrafią czekać. F. Rabelais
Dzięki naszemu cierpliwości możemy osiągnąć więcej niż dzięki sile. E. Burke
Należy umieć znosić to, czego nie można uniknąć. M. Montaigne
Kto w działaniu jest odważny, ten nie boi się słów. Sofokles
Nie lubię walczyć, lubię wygrywać. B. Shaw
Zastraszony i przyciśnięty do muru kot zamienia się w tygrysa. M. Cervantes
Godny człowiek nie chodzi śladami innych. Konfucjusz
Wielki umysł ujawni swoją siłę nie tylko w umiejętności myślenia, ale i w umiejętności życia. R. Emerson
Chwała to towar, który nie przynosi korzyści. Kosztuje dużo, a kiepsko się utrzymuje. O. Balzac
Powściągliwość i stosowność w rozmowach są cenniejsze niż elokwencja. F. Bacon
Kto nie potrafi milczeć, ten nie potrafi też mówić. Seneka Młodszy
Dobre maniery polegają na małych wyrzeczeniach. F. Chesterfield
Dobry człowiek to nie ten, kto potrafi czynić dobro, ale ten, kto nie potrafi czynić zła. W. Kliuczewski
Nie formułuj nieodwracalnych sądów! Augustyn
Nic w nadmiarze! Solon

Pozostało nam stworzyć podprogram, który wyciąga losowy wiersz z pliku source.
Sformułujmy algorytm działania podprogramu:

  1. Otwieramy plik source
  2. Liczymy liczbę wierszy w otwartym pliku
  3. Zamykamy plik (nie ma potrzeby trzymać go otwartego dłużej niż to konieczne)
  4. Generujemy losową liczbę całkowitą w zakresie liczby wierszy pliku source
  5. Otwieramy plik source
  6. Wyświetlamy wiersz o numerze wylosowanej liczby
  7. Zamykamy plik

Realizujemy algorytm w Pythonie (piszę pod Python 3.7):

import random  # importujemy do generowania losowych liczb
import os  # do uzyskania ścieżki

path = os.path.abspath(__file__)  # uzyskujemy bezpośrednią ścieżkę do pliku rndstr.py
path = os.path.dirname(path)  # przekształcamy w ścieżkę do katalogu
path = path  + ' /source'  # przekształcamy w ścieżkę do pliku source

f = open(path)  # otwieramy plik
i = 0  # zerujemy licznik
for str in f: i+=1  # liczymy wiersze w pliku
f.close  # zamykamy plik

j = int(round(i * random.random()))  # generujemy liczbę całkowitą losową od 0 do i

f = open(path)  # otwieramy plik
i = 0  # zerujemy licznik
for str in f:  # iterujemy wiersze z pliku
    if i == j:  # jeśli licznik wierszy jest równy wylosowanej liczbie
        print (str, end='')  # wyświetlamy wiersz bez przechodzenia do nowej linii
        break  # wychodzimy z pętli
    i+=1  # zwiększamy licznik o 1
f.close  # zamykamy plik

Po utworzeniu i zapisaniu plików, musimy nadać plikowi uprawnienia do wykonania rndstr.sh, i stworzyć alias do szybkiego uruchamiania.

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

Teraz wprowadzając w terminalu rnst otrzymamy losowy aforyzm w schowku, który można na przykład wykorzystać w korespondencji.

W ten sposób napisaliśmy coś użytecznego. Stosunkowo użytecznego.

P.s.

Zamierzenie w ostatnim kroku nie zamieściłem zrzutów ekranu i nie omówiłem szczegółowo niektórych działań, opisując tylko zawartość plików, aby czytelnicy mieli możliwość samodzielnej pracy.

Na tym «Termux krok po kroku», myślę, że warto zakończyć. Oczywiście to tylko najwcześniejsze kroki, ale teraz możecie iść naprzód samodzielnie.

Początkowo planowałem pokazać w tym cyklu jak korzystać z nmap, sqlmap, ale już bez mnie jest wiele artykułów na ten temat. Jeśli masz ochotę, abym kontynuował cykl „Termux krok po kroku”, to poniżej jest ankieta, a w komentarzach możesz zaproponować, o czym jeszcze pisać.

Tylko zarejestrowani użytkownicy mogą brać udział w ankiecie. Zaloguj się, proszę.

Kontynuować „Termux krok po kroku”?

  • Tak

  • Nie

Głosowało 2 użytkowników. Nie ma wstrzymujących się.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster