Dans l’article précédent de cette série Python, nous avons partagé une brève introduction à Pythonson shell de ligne de commande et IDLE.

Nous avons également montré comment effectuer des calculs arithmétiques, comment stocker des valeurs dans des variables et comment imprimer ces valeurs à l’écran. Enfin, nous avons expliqué les concepts de méthodes et de propriétés dans le cadre de la programmation orientée objet à travers un exemple pratique.

Dans ce guide, nous aborderons le flux de contrôle (pour choisir différents plans d’action en fonction des informations saisies par un utilisateur, du résultat d’un calcul ou de la valeur courante d’une variable) et des boucles (pour automatiser des tâches répétitives) puis appliquerons ce que nous avons appris jusqu’à présent pour écrire un script shell simple qui affichera le type de système d’exploitation, le nom d’hôte, la version du noyau, la version et le nom du matériel de la machine.

Cet exemple, bien que basique, nous aidera à illustrer comment nous pouvons tirer parti POO Pythonpour écrire des scripts shell plus facilement que d’utiliser des outils bash classiques.

En d’autres termes, nous voulons passer de

Publicité
# uname -snrvm
Vérifiez Le Nom D'Hôte De Linux
Vérifiez Le Nom D'Hôte De Linux
Vérifiez Le Nom D’hôte Du Linux

pour

Vérifier Le Nom D'Hôte Linux À L'Aide Du Script Python
Vérifier Le Nom D'Hôte Linux À L'Aide Du Script Python
Vérifier Le Nom D’hôte Linux À L’aide Du Script Python

ou

Script Pour Vérifier Les Informations Du Système Linux
Script Pour Vérifier Les Informations Du Système Linux
Script Pour Vérifier Les Informations Du Système Linux

Ça a l’air joli, n’est-ce pas ? Retroussons nos manches et réalisons-le.

Apprendre le flux de contrôle en Python

Comme nous l’avons dit plus tôt, flux de contrôle nous permet de choisir différents résultats en fonction d’une condition donnée. Son implémentation la plus simple en Python est un sinon clause.

La syntaxe de base est :

if condition:
    # action 1
else:
    # action 2
  • Lorsque la condition est vraie, le bloc de code ci-dessous sera exécuté (représenté par # action 1. Sinon, le code sous else sera exécuté.
  • Une condition peut être n’importe quelle déclaration pouvant être évaluée comme vraie ou fausse.

Par exemple:

1 
  • Dans le premier exemple, nous avons comparé deux valeurs pour déterminer si l’une est supérieure à l’autre.
  • Dans le deuxième exemple, nous avons comparé prénom (une variable) pour déterminer si, au point d’exécution courant, sa valeur est identique à « gabriel
  • La condition et l’instruction else doivent être suivies de deux-points (:)
  • L’indentation est importante en Python. Les lignes avec une indentation identique sont considérées comme étant dans le même bloc de code.

Veuillez noter que le sinon déclaration n’est qu’une des nombreuses outils de flux de contrôle disponible en Python. Nous l’avons examiné ici car nous l’utiliserons plus tard dans notre script. Vous pouvez en savoir plus sur le reste des outils dans les documents officiels.

Apprendre les boucles en Python

En termes simples, un boucle est une séquence d’instructions ou d’instructions qui sont exécutées dans l’ordre tant qu’une condition est vraie, ou une fois par élément dans une liste.

La boucle la plus simple en Python est représentée par la pour la boucle qui itère sur les éléments d’une liste donnée ou d’une chaîne commençant par le premier élément et se terminant par le dernier.

Syntaxe de base :

for x in example:
	# do this

Ici, l’exemple peut être soit une liste, soit une chaîne. Si le premier, la variable nommée X représente chaque élément de la liste ; si ce dernier, X représente chaque caractère de la chaîne :

>>> rockBands = []
>>> rockBands.append("Roxette")
>>> rockBands.append("Guns N' Roses")
>>> rockBands.append("U2")
>>> for x in rockBands:
    	print(x)
or
>>> firstName = "Gabriel"
>>> for x in firstName:
    	print(x)

La sortie des exemples ci-dessus est illustrée dans l’image suivante :

Apprendre Les Boucles En Python
Apprendre Les Boucles En Python
Apprendre Les Boucles En Python

Modules Python

Pour des raisons évidentes, il doit exister un moyen d’enregistrer une séquence d’instructions et d’instructions Python dans un fichier pouvant être appelé en cas de besoin.

C’est précisément ce qu’est un module. Particulièrement, le os Le module fournit une interface avec le système d’exploitation sous-jacent et nous permet d’effectuer de nombreuses opérations que nous effectuons habituellement dans une invite de ligne de commande.

A ce titre, il intègre plusieurs méthodes et propriétés qui peuvent être appelées comme nous l’avons expliqué dans l’article précédent. Cependant, nous devons l’importer (ou l’inclure) dans notre environnement en utilisant le mot-clé import :

>>> import os

Imprimons le répertoire de travail courant :

>>> os.getcwd()
Apprendre Les Modules Python
Apprendre Les Modules Python
Apprendre Les Modules Python

Mettons maintenant tout cela ensemble (ainsi que les concepts abordés dans l’article précédent) pour écrire le script souhaité.

Script Python

Il est considéré comme une bonne pratique de démarrer un script avec une déclaration indiquant l’objectif du script, les termes de la licence sous laquelle il est publié et un historique des révisions répertoriant les modifications apportées. Bien qu’il s’agisse davantage d’une préférence personnelle, cela ajoute une touche professionnelle à notre travail.

Voici le script qui produit la sortie que nous avons montrée en haut de cet article. Il est fortement commenté afin que vous puissiez comprendre ce qui se passe.

Prenez quelques minutes pour le parcourir avant de continuer. Notez comment nous utilisons une structure if / else pour déterminer si la longueur de chaque légende de champ est supérieure à la valeur du champ lui-même.

En fonction du résultat, nous utilisons des caractères vides pour remplir l’espace entre une légende de champ et la suivante. De plus, nous utilisons le bon nombre de tirets comme séparateur entre la légende du champ et sa valeur ci-dessous.

#!/usr/bin/python3
# Change the above line to #!/usr/bin/python if you don't have Python 3 installed

# Script name: uname.py
# Purpose: Illustrate Python's OOP capabilities to write shell scripts more easily
# License: GPL v3 (http://www.gnu.org/licenses/gpl.html)

# Copyright (C) 2016 Gabriel Alejandro Cánepa
# ​Facebook / Skype / G+ / Twitter / Github: gacanepa
# Email: gacanepa (at) gmail (dot) com

# This program is free software: you can redistribute it and/or modify
# it is under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program.  If not, see .

# REVISION HISTORY
# DATE   	  VERSION AUTHOR    	 CHANGE DESCRIPTION
# ---------- ------- --------------
# 2016-05-28 1.0     Gabriel Cánepa    Initial version

# Import the os module
import os

# Assign the output of os.uname() to the the systemInfo variable
# os.uname() returns a 5-string tuple (sysname, nodename, release, version, machine)
# Documentation: https://docs.python.org/3.2/library/os.html#module-os
systemInfo = os.uname()

# This is a fixed array with the desired captions in the script output
headers = ["Operating system","Hostname","Release","Version","Machine"]

# Initial value of the index variable. It is used to define the
# index of both systemInfo and headers in each step of the iteration.
index = 0

# Initial value of the caption variable.
caption = ""

# Initial value of the values variable
values = ""

# Initial value of the separators variable
separators = ""

# Start of the loop
for item in systemInfo:
    if len(item) 

Une fois que vous avez enregistré le script ci-dessus dans un fichier, donnez-lui les autorisations d’exécution et exécutez-le comme indiqué au bas du code :

# chmod +x uname.py
# ./uname.py

Si vous obtenez l’erreur suivante lors de la tentative d’exécution du script :

-bash: ./uname.py: /usr/bin/python3: bad interpreter: No such file or directory

Cela signifie que vous n’avez pas Python 3 installée. Si tel est le cas, vous pouvez soit installer le package, soit remplacer la ligne d’interpréteur (portez une attention particulière et soyez très prudent si vous avez suivi les étapes pour mettre à jour les liens symboliques vers les binaires Python comme indiqué dans l’article précédent):

#!/usr/bin/python3

avec

#!/usr/bin/python

ce qui entraînera la version installée de Python 2 pour exécuter le script à la place.

Note: Ce script a été testé avec succès à la fois dans Python 2.x et 3.x.

Bien que quelque peu rudimentaire, vous pouvez considérer ce script comme un module Python. Cela signifie que vous pouvez l’ouvrir dans le IDLE (Fichier → Ouvrir… → Sélectionner un fichier):

Ouvrir Python Dans Idle
Ouvrir Python Dans Idle
Ouvrir Python Dans Idle

Une nouvelle fenêtre s’ouvrira avec le contenu du fichier. Ensuite aller à Exécuter → Exécuter module (ou appuyez simplement sur F5). La sortie du script sera affichée dans le shell d’origine :

Exécuter Le Script Python
Exécuter Le Script Python
Exécuter Le Script Python

Si vous voulez obtenir les mêmes résultats avec un script écrit uniquement en Frappervous devrez utiliser une combinaison de awk, sed et recourir à des méthodes complexes pour stocker et récupérer des éléments dans une liste (sans parler de l’utilisation de tr pour convertir les lettres minuscules en majuscules).

En outre, Python fournit la portabilité dans la mesure où tous les systèmes Linux sont livrés avec au moins une version de Python (soit 2.x ou 3.x, parfois les deux). Si vous deviez vous fier à un shell pour atteindre le même objectif, vous auriez besoin d’écrire différentes versions du script basées sur le shell.

Cela montre que les fonctionnalités de programmation orientée objet peuvent devenir de solides alliés des administrateurs système.

Note: Tu peux trouver ce script python (et d’autres) dans l’un de mes dépôts GitHub.

Résumé

Dans cet article, nous avons passé en revue les concepts de flux de contrôle, de boucles/itérations et de modules en Python. Nous avons montré comment tirer parti des méthodes et des propriétés OOP en Python pour simplifier des scripts shell autrement complexes.

Avez-vous d’autres idées que vous aimeriez tester? Allez-y et écrivez vos propres scripts Python et faites-nous savoir si vous avez des questions. N’hésitez pas à nous écrire en utilisant le formulaire de commentaire ci-dessous, et nous vous répondrons dès que possible.

Rate this post
Publicité
Article précédentTout ce que vous devez savoir sur la bêta de Diablo IV de Blizzard
Article suivantDates de première de l’émission télévisée Netflix 2023: toutes les séries nouvelles et de retour confirmées
Avatar
Violette Laurent est une blogueuse tech nantaise diplômée en communication de masse et douée pour l'écriture. Elle est la rédactrice en chef de fr.techtribune.net. Les sujets de prédilection de Violette sont la technologie et la cryptographie. Elle est également une grande fan d'Anime et de Manga.

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici