Termux étape par étape (Partie 2)

В dernière partie nous nous sommes familiarisés avec les commandes de base de Termux, avons configuré une connexion SSH à un PC, appris à créer des alias et installé plusieurs utilitaires utiles. Cette fois, nous devons aller encore plus loin, nous sommes avec vous :

  • en savoir plus sur Termux:API
  • installez Python et nano, et écrivez "Hello, world!" en Python
  • en savoir plus sur les scripts bash et écrire un script à l'aide de Termux:API
  • en utilisant un script bash, Termux:API et Python nous allons écrire un programme simple

Puisque nous comprenons maintenant ce que font les commandes d'entrée, à partir de l'étape suivante, je ne décrirai pas chaque action avec autant de détails, mais là où il peut y avoir des difficultés, je vais certainement l'expliquer.

J'utilise beaucoup les alias, donc les abréviations utilisées dans cette partie sont présentées ici :

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

Le plan est prêt, vous pouvez commencer ! Et bien sûr, n'oubliez pas "l'onglet magique" (Voir la partie 1).

Étape 4

Plonger dans le Termux: API Rabbit Hole

API combien a fusionné dans ce mot pour le cœur du codeur

Si nous n'abordons pas le sujet de Termux : API, alors toutes nos étapes pourraient être réduites à un simple récit d'une brochure comme "Linux pour les nuls", comme cela a été noté à juste titre dans les commentaires de la première partie.

Tout d'abord, installez Termux:API à partir du Google Play Market (ça ne fait pas de mal de redémarrer Termux ensuite) :

Termux étape par étape (Partie 2)

Ensuite, nous devons installer le package API dans la console Termux :

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

Pour l'expérimentation, j'utilise Android 5.1.1, pour les propriétaires d'Android 7 doivent "protéger" Termux : API en allant dans "Paramètres"> "Applications protégées", sinon les appels d'API comme termux-battery-status, pendra. (Cm. wiki du projet)

Maintenant, il vaut la peine d'examiner de plus près les opportunités acquises. La description la plus récente et la plus détaillée de Termux:API peut être trouvée sur wiki du projet. Je vais essayer de choisir le plus visuel et le plus intéressant, ce qui me permettra de remplir ma main pour un travail indépendant à l'avenir.

Quelques exemples Termux:API

  • termux-état-de-la-batterie
    Retourne l'état de la batterie
    Termux étape par étape (Partie 2)
  • termux-luminosité
    Règle la luminosité de l'écran de 0 à 255
    Termux étape par étape (Partie 2)
  • toast-termux
    Affiche une notification de toast temporaire
    Termux étape par étape (Partie 2)
  • torche termux
    Comprend une lampe de poche
    Termux étape par étape (Partie 2)
  • termux-wifi-scaninfo
    Renvoie des informations sur la dernière analyse des réseaux Wi-Fi
    Termux étape par étape (Partie 2)

Il est facile de voir que les valeurs de retour sont des chaînes, des dictionnaires, des listes de dictionnaires, en général, des types de données avec lesquels Python fonctionne très bien, donc la prochaine étape consiste à le configurer.

Étape 5

Installer Python et nano

Pour installer Python, écrivez dans le terminal :

updg
apt install python
apt install python2

Nous avons maintenant 2 et 3 Python installés.

En travaillant sur l'article, j'ai découvert un autre éditeur de texte nano que j'aimais plus que vim, installons-le :

apt install nano

Il est plus facile à utiliser que vim et nano a une interface plus conviviale. Sur un appareil Android, vim est toujours plus pratique.

HelloWorld en Python chez Termux

Dans l'ensemble, il était possible de se passer de cet élément, mais mettre Python dans Termux et ne pas écrire HelloWorld, à mon avis, est de mauvaises manières.

Mon objectif n'est pas d'enseigner Python à qui que ce soit, donc ceux qui ne connaissent pas peuvent simplement copier le code (ou commencer à apprendre par eux-mêmes, car il y a suffisamment de littérature), et ceux qui savent peuvent créer quelque chose eux-mêmes. Et je vais "sous couvert" encore montrer un moyen de saisir du texte dans le terminal sans éditeur.

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 étape par étape (Partie 2)

Si vous n'avez pas remarqué d'erreur lors du processus de saisie et avez déjà appuyé sur Entrée, vous ne pourrez pas accéder à la ligne ci-dessus, pour ce faire, terminez la saisie en appuyant sur Ctrl + D (vous pouvez généralement interrompre Ctrl + Z) et répétez tout depuis le début. Puisque nous avons utilisé '>', le fichier sera complètement écrasé. Pour cette raison, je ne recommande pas d'utiliser cette méthode de saisie à moins que vous ne soyez sûr d'écrire le code immédiatement sans erreur.

Étape 6

Scripts bash

Les scripts bash sont un excellent moyen d'automatiser le travail de votre terminal. Le script est un fichier avec l'extension .sh (l'extension est facultative) contenant un ensemble de commandes de terminal, dont certaines que nous avons déjà étudiées. Ici liste de la plupart des commandes, tout devrait fonctionner, mais notez qu'il s'agit d'une liste pour Linux "adulte", pas Termux, mais juste excellent matériel sur les scripts bash.

À l'aide de scripts, vous pouvez automatiser presque toutes les actions monotones. Écrivons le script bash le plus simple qui affiche la valeur de la variable qu'il a créée, j'utiliserai à nouveau cat, vous pouvez utiliser un éditeur de texte normal, et ceux qui veulent particulièrement s'entraîner peuvent utiliser 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 étape par étape (Partie 2)

Script bash avec Termux:API

Écrivons quelque chose de différent des fameux HelloWorlds, mais tout aussi inutile. Notre script sera :

  1. exécuter la requête API termux-battery-status
  2. enregistrer les données reçues dans le fichier test.txt
  3. imprimer les données d'un fichier à l'écran
  4. exécuter le programme hello-world.py précédemment écrit
  5. écrire les données reçues du programme dans le fichier test.txt
  6. imprimer les données d'un fichier à l'écran
  7. déplacer des données d'un fichier vers le presse-papiers
  8. afficher le contenu du presse-papiers
  9. afficher un message contextuel avec les données du presse-papiers

Tout d'abord, créez un dossier pour le travail et copiez-y hello-world.py en tant que test.py, créez les fichiers test.sh et test.txt dans ce dossier :

mkdir bashscript

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

cd bashscript/

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

chmod +x test.sh

Maintenant, de n'importe quelle manière pratique, écrivez le script dans le fichier 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

Maintenant, étant dans le dossier bashscript, nous écrivons ./test.sh on observe dans le terminal sur l'appareil Android :

Termux étape par étape (Partie 2)

Nous avons donc écrit le script bash prévu. Vous pouvez le diluer avec la sortie vers la console d'informations sur l'exécution de chaque action (en utilisant echo), je laisserai cela aux lecteurs.

Étape 7

Faisons quelque chose d'utile

Relativement utile

Formulons les termes de référence
Après le lancement, l'application doit placer une ligne aléatoire du fichier dans le presse-papiers et en informer avec un message contextuel.

Nous allons prendre un script bash comme base, nous allons extraire une ligne aléatoire d'un fichier à l'aide d'un sous-programme Python. Faisons un plan de travail de script :

  1. Exécuter le sous-programme
  2. Transférer le résultat de la sous-routine dans le presse-papiers
  3. Afficher le message contextuel

Définissons les noms du répertoire et des fichiers d'application :

  • dossier rndstr dans le répertoire personnel
    • source - le fichier à partir duquel nous prendrons des lignes
    • rndstr.py - une sous-routine qui affiche une ligne aléatoire du fichier source à la console
    • rndstr.sh - fichier de script

Créez un répertoire d'application, déplacez-vous dessus et créez-y des fichiers.

Les deux premiers points du plan de script peuvent être combinés par un pipeline, par conséquent, en utilisant Termux : API, nous obtenons :

#!/bin/bash

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

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

Dans le fichier source, vous pouvez mettre n'importe quel texte logiquement divisé en lignes, j'ai décidé de mettre des aphorismes :

Liste des fichiers sources

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

Nous avons juste besoin de créer une sous-routine qui extrait une chaîne aléatoire du fichier source.
Écrivons l'algorithme du sous-programme :

  1. Fichier open-source
  2. Compter le nombre de lignes dans un fichier ouvert
  3. Fermez le fichier (il n'y a rien pour le garder ouvert plus longtemps)
  4. Nous générons un entier aléatoire dans le nombre de lignes du fichier source
  5. Fichier open-source
  6. Nous sortons une ligne sous le numéro du numéro généré
  7. Fermeture du dossier

Nous implémentons l'algorithme en Python (j'écris sous 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  #  закрываем файл

Une fois les fichiers créés et écrits, vous devez donner les autorisations d'exécution de fichier rndstr.sh, et créez un alias pour un lancement rapide.

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

Maintenant, tapez dans le terminal rnst nous obtiendrons un aphorisme aléatoire sur le presse-papiers, qui, par exemple, peut être utilisé dans la correspondance.

Ici, nous avons écrit au moins quelque chose d'utile. Relativement utile.

Ps

Dans la dernière étape, je n'ai intentionnellement pas fourni de captures d'écran et n'ai pas analysé en détail certaines actions, n'écrivant que le contenu des fichiers afin que les lecteurs aient la possibilité de travailler par eux-mêmes.

Sur ce "Termux pas à pas", je pense qu'il vaut la peine de finir. Bien sûr, ce ne sont que les toutes premières étapes, mais maintenant vous pouvez avancer vous-même.

Au départ, j'avais prévu de montrer dans ce cycle comment utiliser nmap, sqlmap, mais sans moi il y a déjà pas mal d'articles sur ce sujet. Si vous voulez que je continue le cycle "Termux étape par étape", alors il y a un sondage ci-dessous et dans les commentaires, vous pouvez suggérer quoi d'autre à écrire.

Seuls les utilisateurs enregistrés peuvent participer à l'enquête. se connecters'il te plait.

Continuer "Termux pas à pas" ?

  • Oui

  • Aucun

2 utilisateurs ont voté. Il n'y a pas d'abstention.

Source: habr.com

Ajouter un commentaire