W 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” ().
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):

Następnie musimy zainstalować pakiet API w konsoli Termux:
updg # Nie zapominaj o aliasach
apt install termux-apiDo 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. )
Teraz warto bliżej poznać zdobyte możliwości. Najświeższy i najdokładniejszy opis Termux:API można znaleźć na . 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-brightness
Ustala jasność ekranu od 0 do 255

- termux-toast
Wykazuje tymczasowe powiadomienie wyskakujące

- termux-torch
Włącza latarkę

- termux-wifi-scaninfo
Zwraca informacje o ostatnim skanowaniu sieci Wi-Fi

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 python2Teraz 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 nanoJest 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)
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 , wszystko powinno działać, ale zwróć uwagę, że to lista dla „dorosłego” Linuxa, a nie dla Termux’a, a oto po prostu .
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
Skrypt Bash z Termux:API
Napiszmy coś różniącego się od słynnych HelloWorld’ów, ale równie nieprzydatnego. Nasz skrypt będzie:
- dokonywać zapytania API termux-battery-status
- zapisywać uzyskane dane do pliku test.txt
- wyświetlać dane z pliku na ekranie
- wykonywać wcześniej napisaną program hello-world.py
- uzyskane od programu dane zapisywać do pliku test.txt
- wyświetlać dane z pliku na ekranie
- przenieść dane z pliku do schowka
- wyświetlać na ekranie zawartość schowka
- 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.shTeraz 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 # пункт 9Teraz, będąc w folderze bashscript, piszemy .\/test.sh obserwujemy w terminalu na urządzeniu z Androidem:

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:
- Uruchomić podprogram
- Przenieś wynik działania podprogramu do schowka
- 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! SolonPozostało nam stworzyć podprogram, który wyciąga losowy wiersz z pliku source.
Sformułujmy algorytm działania podprogramu:
- Otwieramy plik source
- Liczymy liczbę wierszy w otwartym pliku
- Zamykamy plik (nie ma potrzeby trzymać go otwartego dłużej niż to konieczne)
- Generujemy losową liczbę całkowitą w zakresie liczby wierszy pliku source
- Otwieramy plik source
- Wyświetlamy wiersz o numerze wylosowanej liczby
- 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 plikPo 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. , 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





