Termux βήμα προς βήμα (Μέρος 2)

В τελευταίο μέρος Γνωριστήκαμε με τις βασικές εντολές του Termux, δημιουργήσαμε μια σύνδεση SSH με έναν υπολογιστή, μάθαμε πώς να δημιουργήσουμε ψευδώνυμα και εγκαταστήσαμε πολλά χρήσιμα βοηθητικά προγράμματα. Αυτή τη φορά πρέπει να προχωρήσουμε ακόμη περισσότερο, είμαστε μαζί σας:

  • μάθετε για το Termux:API
  • εγκαταστήστε Python και nano και γράψτε "Hello, world!" στην Python
  • μάθετε για τα σενάρια bash και γράψτε ένα σενάριο χρησιμοποιώντας το Termux:API
  • χρησιμοποιώντας ένα σενάριο bash, Termux:API και Python θα γράψουμε ένα απλό πρόγραμμα

Επειδή τώρα καταλαβαίνουμε τι κάνουν οι εντολές εισαγωγής, τότε από το επόμενο βήμα δεν θα περιγράψω κάθε ενέργεια με τόση λεπτομέρεια, αλλά όπου μπορεί να υπάρχουν δυσκολίες, θα εξηγήσω σίγουρα.

Χρησιμοποιώ πολύ ψευδώνυμα, επομένως οι συντομογραφίες που χρησιμοποιούνται σε αυτό το μέρος εμφανίζονται εδώ:

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

Το σχέδιο είναι έτοιμο, μπορείτε να ξεκινήσετε! Και φυσικά, μην ξεχνάτε τη "μαγική καρτέλα" (Δείτε Μέρος 1).

Βήμα 4

Diving Down the Termux:API Rabbit Hole

API πόσα έχει συγχωνευθεί σε αυτή τη λέξη για την καρδιά του κωδικοποιητή

Αν δεν αγγίξουμε το θέμα του Termux: API, τότε όλα μας τα βήματα θα μπορούσαν να περιοριστούν σε μια απλή επανάληψη κάποιου φυλλαδίου όπως το "Linux for Dummies", όπως σωστά σημειώθηκε στα σχόλια του πρώτου μέρους.

Αρχικά, εγκαταστήστε το Termux:API από το Google Play Market (δεν βλάπτει η επανεκκίνηση του Termux μετά):

Termux βήμα προς βήμα (Μέρος 2)

Στη συνέχεια, πρέπει να εγκαταστήσουμε το πακέτο API στην κονσόλα Termux:

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

Για πειραματισμό χρησιμοποιώ Android 5.1.1, για Android 7 οι κάτοχοι πρέπει να "προστατέψουν" το Termux: API μεταβαίνοντας στις "Ρυθμίσεις" > "Προστατευμένες εφαρμογές", διαφορετικά το API καλεί όπως termux-battery-status, θα κρεμαστεί. (Εκ. wiki έργου)

Τώρα αξίζει να ρίξουμε μια πιο προσεκτική ματιά στις ευκαιρίες που αποκτήθηκαν. Η πιο πρόσφατη και πιο λεπτομερής περιγραφή του Termux:API βρίσκεται στη διεύθυνση wiki έργου. Θα προσπαθήσω να επιλέξω το πιο οπτικό και ενδιαφέρον, που θα μου επιτρέψει να γεμίσω το χέρι μου για ανεξάρτητη δουλειά στο μέλλον.

Μερικά παραδείγματα Termux:API

  • termux-battery-status
    Επιστρέφει την κατάσταση της μπαταρίας
    Termux βήμα προς βήμα (Μέρος 2)
  • termux-brightness
    Ρυθμίζει τη φωτεινότητα της οθόνης από 0 έως 255
    Termux βήμα προς βήμα (Μέρος 2)
  • termux-toast
    Εμφανίζει μια προσωρινή ειδοποίηση τοστ
    Termux βήμα προς βήμα (Μέρος 2)
  • termux-φανός
    Περιλαμβάνει φακό
    Termux βήμα προς βήμα (Μέρος 2)
  • termux-wifi-scaninfo
    Επιστρέφει πληροφορίες σχετικά με την τελευταία σάρωση δικτύων Wi-Fi
    Termux βήμα προς βήμα (Μέρος 2)

Είναι εύκολο να δει κανείς ότι οι επιστρεφόμενες τιμές είναι συμβολοσειρές, λεξικά, λίστες λεξικών, γενικά, τύποι δεδομένων με τους οποίους η Python λειτουργεί εξαιρετικά, οπότε το επόμενο βήμα είναι να τη ρυθμίσετε.

Βήμα 5

Εγκαταστήστε Python και nano

Για να εγκαταστήσετε την Python, γράψτε στο τερματικό:

updg
apt install python
apt install python2

Τώρα έχουμε εγκαταστήσει 2 και 3 Python.

Ενώ εργαζόμουν στο άρθρο, ανακάλυψα ένα άλλο πρόγραμμα επεξεργασίας κειμένου nano που μου άρεσε περισσότερο από το vim, ας το εγκαταστήσουμε:

apt install nano

Είναι πιο εύκολο στη χρήση από το vim και το nano έχει πιο φιλική προς το χρήστη διεπαφή. Σε μια συσκευή Android, το vim είναι ακόμα πιο βολικό.

HelloWorld στην Python στο Termux

Σε γενικές γραμμές, ήταν δυνατό να γίνει χωρίς αυτό το στοιχείο, αλλά το να βάλεις την Python στο Termux και να μην γράψεις το HelloWorld, κατά τη γνώμη μου, είναι κακοί τρόποι.

Δεν σκοπεύω να διδάξω σε κανέναν Python, οπότε όσοι δεν γνωρίζουν μπορούν απλά να αντιγράψουν τον κώδικα (ή να αρχίσουν να μαθαίνουν μόνοι τους, αφού υπάρχει αρκετή βιβλιογραφία), και όσοι γνωρίζουν μπορούν να φτιάξουν κάτι μόνοι τους. Και θα συνεχίσω να δείξω "υπό το πρόσχημα" έναν τρόπο εισαγωγής κειμένου στο τερματικό χωρίς πρόγραμμα επεξεργασίας.

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 βήμα προς βήμα (Μέρος 2)

Εάν δεν παρατηρήσατε κάποιο σφάλμα κατά τη διαδικασία εισαγωγής και πατήσατε ήδη Enter, τότε δεν θα μπορείτε να μεταβείτε στην παραπάνω γραμμή. Για να το κάνετε αυτό, τερματίστε την εισαγωγή πατώντας Ctrl + D (μπορείτε γενικά να διακόψετε Ctrl + Ζ) και επαναλάβετε τα πάντα από την αρχή. Εφόσον χρησιμοποιήσαμε '>' τότε το αρχείο θα αντικατασταθεί πλήρως. Για το λόγο αυτό, δεν συνιστώ τη χρήση αυτής της μεθόδου εισαγωγής, εκτός εάν είστε βέβαιοι ότι θα γράψετε τον κώδικα αμέσως χωρίς σφάλματα.

Βήμα 6

Σενάρια Bash

Τα σενάρια Bash είναι ένας πολύ καλός τρόπος για να αυτοματοποιήσετε την εργασία σας στο τερματικό. Το σενάριο είναι ένα αρχείο με την επέκταση .sh (η επέκταση είναι προαιρετική) που περιέχει ένα σύνολο εντολών τερματικού, μερικές από τις οποίες έχουμε ήδη μελετήσει. Εδώ λίστα με τις περισσότερες εντολές, όλα θα πρέπει να λειτουργούν, αλλά σημειώστε ότι αυτή είναι μια λίστα για "ενήλικες" Linux, όχι Termux, αλλά απλώς εξαιρετικό υλικό για σενάρια bash.

Με τη βοήθεια σεναρίων, μπορείτε να αυτοματοποιήσετε σχεδόν όλες τις μονότονες ενέργειες. Ας γράψουμε το απλούστερο σενάριο bash που εμφανίζει την τιμή από τη μεταβλητή που δημιούργησε, θα χρησιμοποιήσω ξανά το cat, μπορείτε να χρησιμοποιήσετε ένα κανονικό πρόγραμμα επεξεργασίας κειμένου και όσοι θέλουν ειδικά να εκπαιδεύσουν τον εαυτό τους μπορούν να χρησιμοποιήσουν το echo.

cat >test.sh

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

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

# Ctrl + D

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

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

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

Termux βήμα προς βήμα (Μέρος 2)

Σενάριο Bash με Termux:API

Ας γράψουμε κάτι διαφορετικό από το περιβόητο HelloWorlds, αλλά εξίσου άχρηστο. Το σενάριό μας θα είναι:

  1. εκτελέστε το αίτημα API termux-battery-status
  2. αποθηκεύστε τα ληφθέντα δεδομένα στο αρχείο test.txt
  3. εκτύπωση δεδομένων από ένα αρχείο στην οθόνη
  4. εκτελέστε το πρόγραμμα hello-world.py που γράφτηκε προηγουμένως
  5. γράψτε τα δεδομένα που λαμβάνονται από το πρόγραμμα στο αρχείο test.txt
  6. εκτύπωση δεδομένων από ένα αρχείο στην οθόνη
  7. μετακίνηση δεδομένων από αρχείο σε πρόχειρο
  8. εμφάνιση των περιεχομένων του προχείρου
  9. εμφάνιση ενός αναδυόμενου μηνύματος με δεδομένα από το πρόχειρο

Αρχικά, δημιουργήστε έναν φάκελο για εργασία και αντιγράψτε το hello-world.py ως test.py, δημιουργήστε αρχεία test.sh και test.txt σε αυτόν τον φάκελο:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Τώρα, με οποιονδήποτε βολικό τρόπο, γράψτε το σενάριο στο αρχείο 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

Τώρα, όντας στο φάκελο bashscript, γράφουμε ./test.sh παρατηρούμε στο τερματικό της συσκευής Android:

Termux βήμα προς βήμα (Μέρος 2)

Έτσι γράψαμε το προγραμματισμένο σενάριο bash. Μπορείτε να το αραιώσετε με την έξοδο στην κονσόλα πληροφοριών σχετικά με την εκτέλεση κάθε ενέργειας (χρησιμοποιώντας ηχώ), θα το αφήσω για τους αναγνώστες.

Βήμα 7

Ας κάνουμε κάτι χρήσιμο

Σχετικά χρήσιμο

Ας διατυπώσουμε τους όρους αναφοράς
Μετά την εκκίνηση, η εφαρμογή θα πρέπει να τοποθετήσει μια τυχαία γραμμή από το αρχείο στο πρόχειρο και να ειδοποιήσει σχετικά με ένα αναδυόμενο μήνυμα.

Θα πάρουμε ως βάση ένα σενάριο bash, θα εξαγάγουμε μια τυχαία γραμμή από ένα αρχείο χρησιμοποιώντας μια υπορουτίνα Python. Ας φτιάξουμε ένα πλάνο εργασίας σεναρίου:

  1. Εκτέλεση υπορουτίνας
  2. Μεταφέρετε το αποτέλεσμα της υπορουτίνας στο πρόχειρο
  3. Εμφάνιση αναδυόμενου μηνύματος

Ας ορίσουμε τα ονόματα των αρχείων καταλόγου και εφαρμογών:

  • φάκελο rndstr στον αρχικό κατάλογο
    • πηγή - το αρχείο από το οποίο θα πάρουμε γραμμές
    • rndstr.py - μια υπορουτίνα που εμφανίζει μια τυχαία γραμμή από το αρχείο προέλευσης στην κονσόλα
    • rndstr.sh - αρχείο σεναρίου

Δημιουργήστε έναν κατάλογο εφαρμογών και μετακινηθείτε σε αυτόν και δημιουργήστε αρχεία εκεί.

Τα δύο πρώτα σημεία του σχεδίου σεναρίου μπορούν να συνδυαστούν με μια διοχέτευση, ως αποτέλεσμα, χρησιμοποιώντας το Termux: API παίρνουμε:

#!/bin/bash

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

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

Στο αρχείο πηγής, μπορείτε να βάλετε οποιοδήποτε κείμενο λογικά χωρισμένο σε γραμμές, αποφάσισα να βάλω αφορισμούς:

Καταχώριση αρχείου πηγής

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

Απλώς πρέπει να δημιουργήσουμε μια υπορουτίνα που εξάγει μια τυχαία συμβολοσειρά από το αρχείο προέλευσης.
Ας γράψουμε τον αλγόριθμο της υπορουτίνας:

  1. Αρχείο ανοιχτού κώδικα
  2. Μετρώντας τον αριθμό των γραμμών σε ένα ανοιχτό αρχείο
  3. Κλείστε το αρχείο (δεν υπάρχει τίποτα για να το κρατήσετε ανοιχτό για επιπλέον χρόνο)
  4. Δημιουργούμε έναν τυχαίο ακέραιο εντός του αριθμού των γραμμών του αρχείου προέλευσης
  5. Αρχείο ανοιχτού κώδικα
  6. Βγάζουμε μια γραμμή κάτω από τον αριθμό του παραγόμενου αριθμού
  7. Κλείσιμο του αρχείου

Υλοποιούμε τον αλγόριθμο στην Python (γράφω στην 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  #  закрываем файл

Αφού δημιουργηθούν και γραφτούν τα αρχεία, πρέπει να δώσετε δικαιώματα εκτέλεσης του αρχείου rndstr.shκαι δημιουργήστε ένα ψευδώνυμο για γρήγορη εκκίνηση.

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

Τώρα πληκτρολογείτε στο τερματικό rnst θα πάρουμε έναν τυχαίο αφορισμό στο πρόχειρο, ο οποίος, για παράδειγμα, μπορεί να χρησιμοποιηθεί σε αλληλογραφία.

Εδώ έχουμε γράψει τουλάχιστον κάτι χρήσιμο. Σχετικά χρήσιμο.

Ps

Στο τελευταίο βήμα, σκόπιμα δεν έδωσα στιγμιότυπα οθόνης και δεν ανέλυσα λεπτομερώς ορισμένες από τις ενέργειες, γράφοντας μόνο τα περιεχόμενα των αρχείων ώστε οι αναγνώστες να έχουν τη δυνατότητα να εργαστούν μόνοι τους.

Σε αυτό το "Termux βήμα προς βήμα", νομίζω ότι αξίζει να το τελειώσουμε. Φυσικά, αυτά είναι μόνο τα πρώτα βήματα, αλλά τώρα μπορείτε να προχωρήσετε μόνοι σας.

Αρχικά, σχεδίαζα να δείξω σε αυτόν τον κύκλο πώς να χρησιμοποιήσω το nmap, το sqlmap, αλλά χωρίς εμένα υπάρχουν ήδη πολλά άρθρα σχετικά με αυτό το θέμα. Αν θέλετε να συνεχίσω τον κύκλο «Termux step by step», τότε υπάρχει μια έρευνα παρακάτω και στα σχόλια μπορείτε να προτείνετε τι άλλο να γράψετε.

Μόνο εγγεγραμμένοι χρήστες μπορούν να συμμετάσχουν στην έρευνα. Συνδεθείτε, Σας παρακαλούμε.

Συνέχεια "Termux βήμα προς βήμα";

  • Ναί

  • Όχι

Ψήφισαν 2 χρήστες. Δεν υπάρχουν αποχές.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο