Termux étape par étape (Partie 2)

Dans la partie précédente nous nous sommes familiarisés avec les commandes de base de Termux, nous avons configuré une connexion SSH avec un PC, appris à créer des alias et installé plusieurs utilitaires utiles. Cette fois, nous allons aller encore plus loin, nous allons :

  • découvrir Termux:API
  • installer Python et nano, et écrire « Hello, world ! » en Python
  • en apprendre sur les scripts bash et écrire un script utilisant Termux:API
  • en utilisant un script bash, Termux:API et Python, créer un petit programme

Puisque nous comprenons maintenant ce que font les commandes saisies, je ne détaillerai plus chaque action à partir de ce point, mais j'expliquerai là où des difficultés pourraient surgir.

J'utilise souvent des 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, nous pouvons commencer ! Et bien sûr, n'oubliez pas le « magique Tab » (Voir Partie 1).

Étape 4

Plongeons dans le terrier du lapin Termux:API

API, combien ce mot signifie pour le cœur d'un codeur

Si l'on ne touche pas au sujet de Termux:API, alors toutes nos étapes pourraient être réduites à un simple résumé d'une brochure comme « Linux pour les nuls », comme cela a été justement noté dans les commentaires de la première partie.

Pour commencer, installons Termux:API depuis le Google Play Market (il ne sera pas superflu de redémarrer Termux après cela) :

Termux étape par étape (Partie 2)

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

updg # N'oublions pas les alias
apt install termux-api

Pour les expériences, j'utilise Android 5.1.1, pour les propriétaires d'Android 7, il faut « protéger » Termux: API en allant dans ‘Paramètres’ > ‘Applications sécurisées’, sinon les appels API, comme termux-battery-status, vont se bloquer. (Voir. wiki du projet)

Il est maintenant temps de se familiariser avec les fonctionnalités acquises. La description la plus récente et détaillée de Termux:API peut être trouvée sur wiki du projet. Je vais essayer de sélectionner les éléments les plus illustratifs et intéressants pour permettre de se familiariser davantage avec le travail autonome à l'avenir.

Quelques exemples de Termux:API

  • termux-battery-status
    Renvoie l'état de la batterie
    Termux étape par étape (Partie 2)
  • termux-brightness
    Règle la luminosité de l'écran entre 0 et 255
    Termux étape par étape (Partie 2)
  • termux-toast
    Affiche une notification contextuelle temporaire
    Termux étape par étape (Partie 2)
  • termux-torch
    Allume la 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 n'est pas difficile de remarquer que les valeurs renvoyées sont des chaînes, des dictionnaires, des listes de dictionnaires, en bref, des types de données avec lesquels Python fonctionne parfaitement, donc la prochaine étape sera de l'installer.

Étape 5

Installons Python et nano

Pour installer Python, tapez dans le terminal :

updg
apt install python
apt install python2

Nous avons maintenant Python 2 et 3 installés.

Au cours de mes recherches pour cet article, j'ai découvert un autre éditeur de texte, nano, qui m'a plu plus que vim, installons-le :

apt install nano

Il est plus facile à utiliser que vim et nano a une interface plus conviviale. Sur les appareils Android, vim reste cependant plus pratique.

HelloWorld en Python dans Termux

On aurait pu se passer de ce point, mais installer Python dans Termux et ne pas écrire de HelloWorld serait, à mon avis, impensable.

Je n'ai pas pour but d'apprendre Python à quiconque, donc ceux qui ne connaissent pas peuvent simplement copier le code (ou commencer à apprendre par eux-mêmes, il y a beaucoup de littérature), et ceux qui savent peuvent aussi fabriquer quelque chose eux-mêmes. Et moi, tout en parlant, je vais montrer comment saisir du texte dans le terminal sans éditeur.

cat >hello-world.py     
# Si vous ne spécifiez pas la source (rappelons que cat 1.txt > 2.txt)
# cat prendra les données du flux d'entrée standard,
# en d'autres termes, à partir du clavier.

str = 'Hello, world!' # nous affectons à la variable str la valeur "Hello, world!"
print (str) # affichons la valeur de la variable str à l'écran

# Ctrl + D pour finir la saisie et enregistrer le fichier (hello-world.py)

py hello-world.py # exécutons le fichier (py est un alias pour python)

Termux étape par étape (Partie 2)

Si pendant la saisie vous n'avez pas remarqué une erreur et que vous avez déjà appuyé sur Entrée, vous ne pourrez pas remonter à la ligne précédente, donc terminez la saisie en appuyant sur Ctrl + D (vous pouvez aussi interrompre avec Ctrl + Z) et recommencez tout. Étant donné que nous avons utilisé '>', le fichier sera complètement écrasé. Pour cette raison, je ne recommande pas d'utiliser cette méthode de saisie si vous n'êtes pas sûr de pouvoir écrire le code immédiatement sans erreurs.

Étape 6

Scripts Bash

Les scripts Bash sont un excellent moyen d'automatiser le travail dans le terminal. Un script est un fichier avec l'extension .sh (l'extension n'est pas obligatoire) contenant un ensemble de commandes terminales dont certaines ont déjà été abordées. Voici la liste de la plupart des commandes, tout devrait fonctionner, mais gardez à l'esprit que c'est une liste pour un Linux "adulte" et non pour Termux, et voici simplement un excellent matériel sur les scripts bash.

Avec des scripts, il est possible d'automatiser pratiquement toutes les actions monotones. Écrivons un simple script bash qui affiche une valeur à partir d'une variable qu'il a lui-même créée, j'utiliserai à nouveau cat, mais vous pouvez utiliser un éditeur de texte normal, et ceux qui souhaitent s'entraîner peuvent utiliser echo.

cat >test.sh

export str="Bonjour, Habr!"
# export crée une variable str
# et lui attribue la valeur "Bonjour, Habr!"
# Ne mettez pas d'espaces avant et après '='

echo $str # Pour accéder aux variables, mettez '$' devant

# Ctrl + D

# ./test.sh pour exécuter le script, mais si vous le faites maintenant, une erreur se produira
# pour éviter l'erreur, il faut rendre le fichier test.sh exécutable

chmod +x test.sh
# chmod change les permissions (+ ajouter / - retirer)
# '+x' signifie que nous rendons le fichier exécutable

./test.sh # Nous exécutons notre script

Termux étape par étape (Partie 2)

Script Bash avec Termux:API

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

  1. effectuer une requête API termux-battery-status
  2. enregistrer les données obtenues dans le fichier test.txt
  3. afficher les données du fichier à l'écran
  4. exécuter le programme hello-world.py écrit précédemment
  5. enregistrer les données du programme dans le fichier test.txt
  6. afficher les données du fichier à l'écran
  7. transférer les données du fichier dans le presse-papiers
  8. afficher le contenu du presse-papiers à l'écran
  9. afficher un message contextuel avec les données du presse-papiers

Commençons par créer un dossier de travail et y copier hello-world.py sous le nom test.py, puis créons dans ce dossier les fichiers test.sh et test.txt :

mkdir bashscript

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

cd bashscript/

touch test.sh test.txt # touch crée des fichiers

chmod +x test.sh

Maintenant, de n'importe quelle manière pratique, écrivons 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, dans le dossier bashscript, nous écrivons ./test.sh observons dans le terminal sur le dispositif Android :

Termux étape par étape (Partie 2)

Nous avons écrit le script bash prévu. On peut enrichir son affichage dans la console avec des informations sur l'exécution de chaque action (avec echo), je laisserai cela aux lecteurs.

Étape 7

Faisons quelque chose d'utile

Relativement utile

Formulons le cahier des charges
L'application doit, après son lancement, placer une chaîne aléatoire du fichier dans le presse-papiers et notifier cela avec un message contextuel.

Nous prendrons comme base le script bash, et nous extrairons une chaîne aléatoire du fichier à l'aide d'une sous-programme en Python. Établissons un plan de travail pour le script :

  1. Lancer la sous-programme
  2. Transférer le résultat de l'exécution de la sous-programme dans le presse-papiers
  3. Afficher un message contextuel

Déterminons les noms du répertoire et des fichiers de l'application :

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

Créons le répertoire de l'application et, en nous y déplaçant, créons les fichiers.

Les deux premières étapes du plan du script peuvent être combinées en un pipeline, résultant, en utilisant Termux:API, en :

#!/bin/bash

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

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

Dans le fichier source, vous pouvez placer tout texte logiquement séparé par des lignes, j'ai décidé d'y mettre des aphorismes :

Listing du fichier source

L'honnêteté n'est pas vérité. L. Lavelle
Supporte et retiens-toi. Épictète
N'est noble que ce qui est désintéressé. J. La Bruyère
Sois sage et courageux. B. Gracián
La bonté vaut mieux que la beauté. G. Heine
Pour de grandes entreprises, une constance inflexible est nécessaire. F. Voltaire
Si tu veux plaire à tout le monde, sers-toi toi-même. B. Franklin
L'excès de modestie n'est rien d'autre qu'une fierté cachée. A. Chenier
Les gens très intelligents commencent à ne pas être dignes de confiance lorsqu'on voit leur embarras. F. Nietzsche
La pauvreté indique un manque de moyens, et non un manque de noblesse. D. Boccace
Il faut se garder de porter la modestie à l'humiliation. A. Bakihanov
Qui renonce à beaucoup peut s'en permettre beaucoup. J. Chardon
Lorsqu'on nous paie pour un acte noble, nous nous le faisons retirer. N. Chamfort
Ne rien obtenir du tout n'est pas effrayant, mais perdre ce qu'on a obtenu est vexant. Claude Élien
Il est plus facile de supporter patiemment ce que nous ne pouvons pas changer. Horace
On se fatigue à attendre, mais combien c'eût été pire si l'on n'avait rien à attendre. B. Shaw
Tout arrive à temps, si les gens savent attendre. F. Rabelais
Avec notre patience, nous pouvons accomplir plus qu'avec la force. E. Burke
Il faut savoir supporter ce qu'il est impossible d'éviter. M. Montaigne
Qui est courageux dans l'affaire n'a pas peur des mots. Sophocle
Je n'aime pas me battre, j'aime gagner. B. Shaw
Un chat acculé se transforme en tigre. M. Cervantès
Un homme digne ne suit pas les traces des autres. Confucius
Un grand esprit manifestera sa force non seulement par sa capacité à penser, mais aussi par sa capacité à vivre. R. Emerson
La gloire est une marchandise peu rentable. Elle coûte cher et se conserve mal. O. Balzac
La réserve et la pertinence dans les conversations valent plus que l'éloquence. F. Bacon
Qui ne sait pas se taire ne sait pas parler non plus. Sénèque le Jeune
De bonnes manières consistent en de petits sacrifices. F. Chesterfield
Un homme bon n'est pas celui qui sait faire le bien, mais celui qui ne sait pas faire le mal. V. Kliouchefsky
Ne portez pas de jugements irrévocables ! Augustin
Rien de trop ! Solon

Il nous reste à créer une sous-programme qui extrait une ligne aléatoire du fichier source.
Décrivons l'algorithme de fonctionnement de la sous-programme :

  1. Ouvrons le fichier source
  2. Comptons le nombre de lignes dans le fichier ouvert
  3. Fermons le fichier (inutile de le laisser ouvert plus longtemps)
  4. Générer un nombre entier aléatoire dans les limites du nombre de lignes du fichier source
  5. Ouvrons le fichier source
  6. Afficher la ligne correspondant au numéro généré
  7. Fermer le fichier

Implémenter l'algorithme en Python (j'écris sous Python 3.7) :

import random  # importer pour générer des nombres aléatoires
import os  # pour obtenir le chemin

path = os.path.abspath(__file__)  # obtenir le chemin absolu du fichier rndstr.py
path = os.path.dirname(path)  # le convertir en chemin vers le répertoire
path = path + 'source'  # le convertir en chemin vers le fichier source

f = open(path)  # ouvrir le fichier
i = 0  # initialiser le compteur
for str in f: i+=1  # compter les lignes du fichier
f.close  # fermer le fichier

j = int(round(i * random.random()))  # générer un nombre entier aléatoire de 0 à i

f = open(path)  # ouvrir le fichier
i = 0  # initialiser le compteur
for str in f:  # parcourir les lignes du fichier
    if i == j:  # si le compteur de lignes est égal au nombre généré
        print (str, end='')  # afficher la ligne sans passer à la ligne suivante
        break  # sortir de la boucle
    i+=1  # augmenter le compteur de 1
f.close  # fermer le fichier

Après avoir créé et enregistré les fichiers, il est nécessaire de donner les droits d'exécution au fichier rndstr.sh, et de créer un alias pour un lancement rapide.

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

Maintenant, en entrant dans le terminal rnst nous obtiendrons dans le presse-papiers un aphorisme aléatoire, que l'on peut par exemple utiliser dans une correspondance.

Voilà, nous avons écrit quelque chose d'utile. Relativement utile.

P.S.

J'ai délibérément omis de fournir des captures d'écran à l'étape finale et je n'ai pas détaillé certaines actions, listant seulement le contenu des fichiers, afin que les lecteurs aient la possibilité de travailler eux-mêmes.

Je pense qu'il est temps de conclure ce « Termux étape par étape ». Bien sûr, ce ne sont que les tout premiers pas, mais maintenant vous pouvez avancer par vous-mêmes.

À l'origine, je prévoyais de montrer dans cette série comment utiliser nmap, sqlmap, mais il y a déjà beaucoup d'articles à ce sujet. Si vous voulez que je continue la série « Termux étape par étape », il y a un sondage ci-dessous et vous pouvez suggérer dans les commentaires d'autres sujets à aborder.

Seuls les utilisateurs enregistrés peuvent participer au sondage. Connectez-vous, s'il vous plaît.

Continuer « Termux étape par étape » ?

  • Oui

  • Non

2 utilisateurs ont voté. Aucun abstention.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster