Termux Schrëtt fir Schrëtt (Deel 2)

В leschten Deel Mir hunn d'Basis Termux Befehle vertraut, eng SSH Verbindung mat engem PC opgeriicht, geléiert wéi een Aliasen erstellt an e puer nëtzlech Utilities installéiert. Dës Kéier musse mir nach méi wäit goen, mir si mat Iech:

  • léiert iwwer Termux: API
  • Loosst eis Python an Nano installéieren, a schreiwen och "Hallo, Welt!" am Python
  • léiert iwwer Bash Scripten a schreift e Skript mat Termux: API
  • Loosst eis en einfache Programm schreiwen mat engem Bash Skript, Termux: API a Python

Well mir elo verstinn wat déi aginn Kommandoen maachen, wäert ech aus dem nächste Schrëtt net all Handlung esou detailléiert beschreiwen, awer wou et Schwieregkeete kënne sinn, wäert ech definitiv erklären.

Ech benotzen dacks Aliasen, sou datt d'Ofkierzungen, déi an dësem Deel benotzt ginn, hei gewisen ginn:

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

De Plang ass prett, mir kënnen ufänken! An natierlech vergiesst net iwwer de "Magie Tab" (Kuckt Deel 1).

Schrëtt 4

Diving Down the Termux: API Rabbit Hole

API, wéi vill an dësem Wuert fir d'Häerz vum Coder fusionéiert huet

Wa mir d'Thema vun Termux:API net beréieren, da kéinten all eis Schrëtt reduzéiert ginn op eng einfach Retelling vun enger Broschür wéi "Linux fir Dummies", wéi et richteg an de Kommentaren zum éischten Deel bemierkt gouf.

Als éischt, loosst eis Termux: API vum Google Play Market installéieren (duerno wäert et net schueden Termux nei ze starten):

Termux Schrëtt fir Schrëtt (Deel 2)

Als nächst musse mir den API Package an der Termux Konsol installéieren:

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

Fir Experimenter benotzen ech Android 5.1.1, fir Android 7 Besëtzer musst Dir den Termux:API 'schützen' andeems Dir op Settings> Protected Apps gitt, soss API rifft wéi termux-battery-status, wäert afréieren. (Cm. Projet wiki)

Elo ass et Zäit fir déi erfuerene Fäegkeeten méi no ze kucken. Déi lescht an detailléiert Beschreiwung vun Termux:API fannt Dir op Projet wiki. Ech wäert probéieren déi visuell an interessantst ze wielen, wat mir erlaabt an Zukunft besser op onofhängeg Aarbecht ze ginn.

E puer Beispiller vun Termux: API

  • termux-Batterie-Status
    Gitt de Batteriestatus zréck
    Termux Schrëtt fir Schrëtt (Deel 2)
  • termux-Hellegkeet
    Setzt Écran Hellegkeet vun 0 bis 255
    Termux Schrëtt fir Schrëtt (Deel 2)
  • termux-Toast
    Weist eng temporär Pop-up Notifikatioun
    Termux Schrëtt fir Schrëtt (Deel 2)
  • termux-fackel
    Enthält Täscheluucht
    Termux Schrëtt fir Schrëtt (Deel 2)
  • termux-wifi-scaninfo
    Gitt Informatioun iwwer de leschte Scan vu Wi-Fi Netzwierker zréck
    Termux Schrëtt fir Schrëtt (Deel 2)

Et ass einfach ze gesinn datt d'Retourwäerter Strings, Dictionnairen, Lëschte vun Dictionnairen sinn, am Fong Datentypen mat deenen de Python gutt funktionnéiert, also de nächste Schrëtt ass et opzestellen.

Schrëtt 5

Installéiert Python an Nano

Fir Python z'installéieren, schreift am Terminal:

updg
apt install python
apt install python2

Elo hu mir Python 2 an 3 installéiert.

Wärend un dësem Artikel geschafft hunn, hunn ech en aneren Texteditor entdeckt, Nano, deen ech méi gär hunn wéi vim, loosst eis et installéieren:

apt install nano

Et ass méi einfach ze benotzen wéi vim, an Nano huet e méi userfrëndlechen Interface. Op engem Android Apparat ass vim nach ëmmer méi praktesch.

HelloWorld am Python an Termux

Am grousse Ganzen war et méiglech ouni dëse Punkt ze maachen, awer Python an Termux z'installéieren an HelloWorld net ze schreiwen, menger Meenung no, ass schlecht Manéieren.

Mäin Zil ass et kee Python ze léieren, sou datt déi, déi et net kennen, einfach de Code kopéieren (oder eleng ufänken ze léieren, glécklecherweis gëtt et genuch Literatur), an déi, déi et kennen, kënnen eppes selwer sculptéieren. An op der Rou weisen ech Iech och e Wee fir Text am Terminal ouni Redakter anzeginn.

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 Schrëtt fir Schrëtt (Deel 2)

Wann Dir während dem Inputprozess net e Feeler gemierkt hutt a schonn Enter gedréckt hutt, da kënnt Dir net op d'Linn hei uewen goen; fir dëst ze maachen, fäerdeg d'Entrée andeems Dir Ctrl + D dréckt (Dir kënnt souguer Ctrl + Z ënnerbriechen) an widderhuelen alles vun Ufank un. Well mir '>' benotzt hunn, gëtt de Fichier komplett nei geschriwwe ginn. Aus dësem Grond recommandéieren ech net dës Inputmethod ze benotzen, ausser Dir sidd sécher datt Dir de Code direkt ouni Feeler schreift.

Schrëtt 6

Bash Scripten

Bash Scripte sinn e super Wee fir Är Terminalaarbecht ze automatiséieren. De Skript ass e Fichier mat der Extensioun .sh (d'Extensioun ass fakultativ) mat enger Rei vun Terminalbefehle, e puer vun deenen mir scho studéiert hunn. Hei Lëscht vun de meeschte Kommandoen, alles soll funktionnéieren, awer notéiert w.e.g. datt dëst eng Lëscht fir "erwuessene" Linux ass, an net fir Termux, awer just Great Saachen op Bash Scripten.

Mat Skripte kënnt Dir bal all monoton Aktiounen automatiséieren. Loosst eis en einfachen Bash-Skript schreiwen, deen de Wäert aus der Variabel erausginn, déi se erstallt huet, ech wäert erëm Kaz benotzen, Dir kënnt en normalen Texteditor benotzen, an déi, déi besonnesch sech selwer trainéiere wëllen, kënnen Echo benotzen.

cat >test.sh

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

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

# Ctrl + D

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

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

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

Termux Schrëtt fir Schrëtt (Deel 2)

Bash Skript mat Termux:API

Loosst eis eppes anescht schreiwen wéi déi notoresch HelloWorlds, awer grad sou nëtzlos. Eis Skript wäert sinn:

  1. Leeschtung termux-Batterie-Status API Ufro
  2. späichert déi kritt Donnéeën an de Fichier test.txt
  3. weisen Daten aus enger Datei um Bildschierm
  4. de virdru geschriwwene Hello-world.py Programm ausféieren
  5. Schreift d'Daten, déi aus dem Programm kritt goufen, an d'Datei test.txt
  6. weisen Daten aus enger Datei um Bildschierm
  7. Daten vun enger Datei op de Clipboard transferéieren
  8. weist den Inhalt vum Clipboard
  9. weist e Pop-up Message mat Daten aus dem Clipboard

Als éischt, loosst eis en Dossier fir Aarbecht erstellen a kopéieren hello-world.py do als test.py, erstellt d'Dateien test.sh an test.txt an dësem Dossier:

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Elo, op all praktesch Manéier, schreift de Skript an d'test.sh Datei:

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

Elo sinn am Bashscript Dossier mir schreiwen ./test.sh Mir gesinn am Terminal op engem Android Apparat:

Termux Schrëtt fir Schrëtt (Deel 2)

Also hu mir de geplangte Bash Skript geschriwwen. Dir kënnt et verdënnen andeems Dir Informatioun iwwer d'Ausféierung vun all Aktioun op d'Konsole ausgitt (mat Echo), ech loossen dat fir d'Lieser.

Schrëtt 7

Loosst eis eppes nëtzlech maachen

Relativ nëtzlech

Loosst eis d'Konditioune formuléieren
Nom Start soll d'Applikatioun eng zoufälleg Zeil vun enger Datei op der Clipboard setzen an iwwer dëst mat engem Pop-up Message informéieren.

Loosst eis e Bash-Skript als Basis huelen an eng zoufälleg Linn aus enger Datei extrahéieren mat enger Python-Subroutine. Loosst eis e Plang fir de Skript maachen:

  1. Subroutine lafen
  2. Transfert d'Resultat vun der Subroutine op de Clipboard
  3. Weist e Pop-up Message

Loosst eis iwwer d'Nimm vum Verzeechnes an Applikatiounsdateien entscheeden:

  • rndstr Dossier am Heemverzeichnis
    • Quell - de Fichier aus deem mir Linnen huelen
    • rndstr.py - eng Subroutine déi eng zoufälleg Linn vun der Quelldatei op d'Konsole dréckt
    • rndstr.sh - Skriptdatei

Mir erstellen den Applikatiounsverzeichnis a plënneren an et an erstellen Dateien do.

Déi éischt zwee Punkte vum Skriptplang kënnen duerch eng Pipeline kombinéiert ginn, als Resultat, mat Termux: API kréien mir:

#!/bin/bash

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

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

An der Quelldatei kënnt Dir all Text logesch opgedeelt a Linnen setzen, ech hunn decidéiert Aphorismen ze setzen:

Quell Datei Oplëschtung

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

Alles wat mir maache mussen ass eng Subroutine erstellen déi eng zoufälleg String aus der Quelldatei extrahéiert.
Loosst eis den Algorithmus vun der Subroutine beschreiwen:

  1. Öffnen d'Quelldatei
  2. D'Zuel vun den Zeilen an enger oppener Datei zielen
  3. D'Datei zoumaachen (kee Sënn et ze laang op ze halen)
  4. Generéiere vun engem zoufälleg Ganzt bannent der Zuel vun Linnen an der Quell Fichier
  5. Öffnen d'Quelldatei
  6. Mir weisen eng Zeil ënnert der Zuel vun der generéierter Zuel
  7. De Fichier zoumaachen

Loosst eis den Algorithmus am Python implementéieren (ech schreiwen ënner 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  #  закрываем файл

Nodeems d'Dateien erstallt a geschriwwe sinn, musst Dir d'Ausféierungsrechter op d'Datei ginn rndstr.sh, a erstellt en Alias ​​fir séier ze starten.

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

Elo andeems Dir am Terminal erakënnt rnst mir kréien e zoufälleg Aphorismus um Clipboard, deen zum Beispill an der Korrespondenz benotzt ka ginn.

Also hu mir op d'mannst eppes nëtzlech geschriwwen. Relativ nëtzlech.

Ps

Am leschte Schrëtt hunn ech bewosst keng Screenshots zur Verfügung gestallt an hunn e puer vun den Aktiounen net am Detail analyséiert, nëmmen d'Inhalter vun den Dateien beschriwwen, sou datt d'Lieser d'Méiglechkeet hunn eleng ze schaffen.

Ech mengen et ass derwäert dësen "Termux Schrëtt fir Schrëtt" ofzeschléissen. Natierlech sinn dëst just déi éischt Schrëtt, awer elo kënnt Dir eleng viru goen.

Am Ufank hunn ech geplangt an dëser Serie ze weisen wéi nmap, sqlmap benotzt gëtt, awer och ouni mech sinn et scho vill Artikelen iwwer dëst Thema. Wann Dir wëllt datt ech d'Serie "Termux Schrëtt fir Schrëtt" weiderfuere loossen, da gëtt et eng Ëmfro hei drënner an an de Kommentarer kënnt Dir virschloen, iwwer wat soss ze schreiwen.

Nëmme registréiert Benotzer kënnen un der Ëmfro deelhuelen. Umellen, wann ech glift.

Weiderliesen "Termux Schrëtt fir Schrëtt"?

  • datt

  • Nee

2 Benotzer hunn gestëmmt. Et gi keng Enthalungen.

Source: will.com

Setzt e Commentaire