Ce support s'adresse aux ingénieurs système qui souhaitent écrire leurs propres outils d'administration d'un système Linux à l'aide du langage Python. Articulé en trois parties, ce livre donne les explications nécessaires au lecteur, suivies d'exemples concrets de difficulté croissante, pour ainsi étendre les possibilités du shell. La connaissance d'un autre langage de programmation, d'un système Linux (quelle que soit la distribution) et des principes de...
Ce support s'adresse aux ingénieurs système qui souhaitent écrire leurs propres outils d'administration d'un système Linux à l'aide du langage Python. Articulé en trois parties, ce livre donne les explications nécessaires au lecteur, suivies d'exemples concrets de difficulté croissante, pour ainsi étendre les possibilités du shell. La connaissance d'un autre langage de programmation, d'un système Linux (quelle que soit la distribution) et des principes de base d'Unix est un plus pour la lecture de ce support.
Débutée par quelques chapitres pour présenter l'environnement de travail et rappeler les bases du langage Python, la première partie présente ensuite les principes de la Programmation Orientée Objet en Python ainsi que la librairie standard de Python.
Dans la deuxième partie, le lecteur apprend grâce à des exemples concrets à concevoir des outils pour récupérer des informations sur le système, à générer une infrastructure sur le cloud AWS, à renifler le réseau pour récupérer des informations, à accéder aux bases de données, à utiliser différents formats de fichiers (.odt, .csv, .ini, .tar, .zip...), à générer des cartes, à générer des documents au format texte, CSV ou HTML, ou encore à générer des données aléatoires cohérentes... À la fin de cette partie, la simulation de l'activité d'une petite entreprise de gestion permet au lecteur de tester des scripts facilitant la prise de commandes, leurs livraisons et la gestion de stock. La dernière partie propose au lecteur une série d'astuces et d'exemples concrets lui permettant de mettre en oeuvre des techniques plus avancées. L'auteur donne également un aperçu d'outils et d'applications écrites en Python qui font la différence pour aller plus loin dans l'écriture de scripts avec ce langage.
Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.
5.1 Étape 1 : repérez le binaire Python qui vous intéresse
5.2 Étape 2 : vérifiez la présence de la commande pip qui va avec
5.3 Étape 3 : vérifiez le module virtualenv
6. Les autres outils nécessaires
7. Git un compte, des projets et des sauvegardes
8. Inscription sur un site et configuration de base
9. Astuce pour GitHub avec l’authentification SSH
10. Création d’un projet
Le côté fonctionnel classique de Python
1. Introduction
2. Premiers pas
2.1 La commande python
2.2 L’indentation comme syntaxe
Quelques instructions de base
1. Introduction
2. Les opérateurs
3. Les variables
4. Quelques instructions de base
5. Résumé
Les types de données en Python
1. Introduction
2. Les booléens
2.1 Les opérateurs booléens
2.2 Les comparaisons logiques
3. Les numériques
3.1 Les entiers
3.2 Les flottants
3.3 Les opérations
4. Les alphanumériques
4.1 Les opérations applicables aux chaînes de caractères
4.2 Les méthodes applicables aux chaînes de caractères
4.3 Les modificateurs de chaînes ou "string modifiers"
5. Les conteneurs ou séquentiels
5.1 Les listes
5.2 Les dictionnaires
5.3 Les tuples
5.4 Les sets
5.5 Les frozensets
6. Autres types de données
7. Résumé
Le langage Python
1. Introduction
2. La fonction print()
2.1 Print() formatage C-STYLE
2.2 Print() formatage chaîne.format()
2.3 Print() les autres options
3. Les structures conditionnelles
3.1 La structure conditionnelle if-elif-else
3.2 La structure conditionnelle match-case
4. Les boucles
4.1 Quelques exemples simples
4.2 La fonction range()
4.3 Un "else" dans les boucles
4.4 sorted() et sort()
4.5 enumerate()
4.6 L'affectation parallèle dans les boucles
4.7 Les dictionnaires et la fonction items()
4.8 Les listes en compréhension
5. Les fonctions
5.1 Les arguments de fonctions avec Python
5.2 Les fonctions et la portée des variables
5.3 La notion de passage de paramètres par référence
6. Les modules et les paquets
6.1 Les espaces de noms
6.2 Les paquets ou packages
6.3 La recherche des modules et paquets
6.4 Le fichier __main__.py
6.5 Exemple avec la gestion d'un restaurant
7. Les exceptions et la gestion des erreurs
7.1 Les instructions try ... except ... finally
7.2 L'instruction assert
7.3 Déclencher des exceptions
8. Les entrées/sorties (fichier et autres)
9. L’instruction With
10. Exemple de script : hdump
11. Résumé
Le côté Objet de Python
1. Introduction
2. La POO
3. L’objet
4. La classe
5. Une classe simple
6. Ajoutons des attributs
7. Un premier script « objet »
8. La surcharge de fonction
9. L’héritage
10. Exemples de scripts
10.1 Ajoutons le format HTML
10.2 Ajoutons la balise
Librairie standard et quelques autres
1. Introduction
2. La commande pip
3. Les modules sys et os
3.1 Le module sys
3.2 Le module os
4. Les options de la ligne de commandes
5. L'interception des signaux
6. Les fichiers temporaires
7. Les modules pour les opérations sur les fichiers et les répertoires
7.1 os.path
7.2 shutil
7.3 path.py
7.4 pathlib
8. La gestion des processus et sous-processus
8.1 Subprocess.run()
8.2 subprocess.popen()
8.3 Envoyer une commande plus complexe et récupérer la sortie
8.4 Multiprocessing - Le parallélisme par processus
9. Matplotlib
10. RRDtool
11. Les expressions régulières (it's a kind of magic)
11.1 Exemple : récupérer des informations sur l'état du système avec sar (system activity report)
11.2 Exemple : récupérer des informations sur la mémoire des processus
12. Les dates et le temps (back to the future)
12.1 stdlib : calendar, datetime, dateutil, time
12.2 Arrow
13. Le module logging
14. L'accès aux fichiers en mode binaire et le module struct
15. La génération de données aléatoires
16. L’accès aux bases de données
16.1 Les bases de données "SQL"
16.2 Les bases de données "NoSQL"
16.3 MongoDB
16.4 Redis
17. Les ORM ou Object Relationnal Mapping
17.1 SQLAlchemy
17.2 Les autres ORM
18. Réseau
18.1 Un serveur web en une ligne de commande
18.2 Envoyer des mails
18.3 La vérification des boîtes mails
18.4 Python et ssh
18.5 Le transfert de fichier avec ftplib
18.6 telnet lib
19. Python et Scapy : le couteau suisse du réseau
19.1 Analyse d’une connexion FTP
19.2 Dissection d’un paquet ICMP
20. Python et le réseau des réseaux : Internet
20.1 Urllib : requests
20.2 Beautiful soup
21. OpenStreetMap et Folium
22. Outils
22.1 Pexpect
22.2 Cmd
22.3 shlex - Analyse lexicale simple
22.4 Le module humanfriendly
23. Résumé
Aller plus loin avec le langage Python et la POO
1. Introduction
2. Quelques concepts objet essentiels
2.1 Le polymorphisme
2.2 L'héritage multiple
2.3 Le singleton
2.4 La fabrique d'objets
2.5 La fermeture, ou closure en anglais
3. Les méthodes spéciales d'instances
3.1 Les fonctions spéciales classiques
3.2 La surcharge des opérateurs
4. Le gestionnaire de contexte (with) __enter__, __exit__
5. Les objets mutables et non mutables
5.1 Les mutables
5.2 Les non mutables
6. Quelques informations supplémentaires sur les classes en Python
6.1 Les attributs implicites
6.2 Les fonctions et classes incluses
6.3 Les attributs statiques et méthodes statiques
6.4 Les __slots__ pour les performances
7. Les docstrings - chaînes de documentation
7.1 Définition
7.2 Usage
7.3 Génération de documentation
7.4 Tests
8. Les décorateurs
9. Les dataclasses
10. La structure conditionnelle match...case et les classes
11. Les itérateurs, générateurs et autres expressions génératrices
11.1 Les itérateurs
11.2 Les générateurs
12. Gérer ses propres exceptions
13. Les fonctions natives
13.1 Les fonctions natives inclassables
13.2 Les fonctions natives binaires
13.3 Les fonctions natives de conversion ou de création de type
13.4 Les fonctions natives sur les itérables
13.5 Les fonctions natives sur les numériques
13.6 Les fonctions natives sur les objets
14. Résumé
Python et le Cloud
1. Python et l’informatique en Nuage (« Cloud Computing »)
1.1 Introduction « Bonus » par ChatGPT
1.2 Introduction
2. AWS et Python
3. Les bonnes pratiques avec Amazon Web Services
3.1 Les prérequis
3.1.1 Un moyen de paiement
3.1.2 Git
3.1.3 De multiples adresses mail
3.2 Quelques notions et termes
3.3 Mise en place d’un environnement AWS
3.4 La console
3.5 Le VPC par défaut
3.6 Une première instance
4. AWS Lambda et Python
4.1 Définition des autorisations
4.2 AWS Lambda, premiers pas
4.3 Insertion de code personnalisé
4.4 Erreur : que se passe-t-il ?
4.5 Modification des autorisations
4.6 Tester à nouveau
4.7 Pour aller plus loin avec les fonctions Lambda
5. AWS et Python
5.1 AWS boto3 Ligne de commande, premiers pas
5.2 Utilisation des objets de la librairie boto3
5.3 Conclusion
Récupérer des infos sur le système
1. Introduction
2. psutil : récupérer des informations sur le système
3. Des informations sur les composants
3.1 Les processeurs
3.2 La mémoire
3.3 Les périphériques de stockage
3.4 Le réseau
4. Capteurs et autres informations
4.1 Les capteurs
4.2 Autres informations
4.2.1 Boot time
4.2.2 Les utilisateurs
5. Des informations sur les processus
5.1 Classe Objet et méthodes fournies par psutil
5.2 Principes d’utilisation
5.3 Exemples d’utilisation
6. Résumé
Les formats de fichiers populaires
1. Introduction
2. Le format de fichier "INI"
3. Comma Separated Values : CSV
4. MS Office
5. Le module odfpy
5.1 Document Texte
5.2 Document Feuille de calcul
6. Le module multi-format pyexcel
7. Le format de fichier JSON
8. Le format de fichier XML
9. Le module tarfile pour archives tar
10. Le format zip
11. Résumé
Manipulation de données
1. Introduction
2. SQLite en mémoire
2.1 La mission
2.2 La récupération des données
2.3 La définition de la base de données
2.4 Le script principal
3. SMS vers HTML (ou autre)
3.1 Extraction des SMS
3.2 Transformation des SMS
3.3 Conversion
3.4 Script
4. D'une base à l'autre
4.1 Le contexte
4.2 Les schémas
4.3 Le script principal
5. Résumé
La génération de rapports
1. Introduction
2. La génération de PDF : Reportlab
2.1 Hello World en PDF et Reportlab
2.2 Une table avec Reportlab
2.3 Encore une table, mais en mieux
3. Le moteur de patrons Jinja2
3.1 Jinja et le HTML
3.2 Ajoutons un peu de CSS (Cascading Style Sheet)
3.3 Autre cas d'utilisation
4. Un autre moteur de patron : Pug/Jade
4.1 Prérequis : installation de Pug
4.2 Le début du projet
4.3 Bootstrap, c'est bien
4.4 Make, c'est bien
5. Résumé
Simulation d'activité
1. Introduction
2. Description
3. La structure des données
4. L'initialisation de la base de données
4.1 definitions.py
4.2 populate.py
5. La connexion à la base de données
6. Les compteurs
7. Les commandes clients
8. La livraison des commandes clients
9. La facturation des commandes livrées
10. Le réapprovisionnement du stock
11. La réception des commandes fournisseurs
12. Utilisation
13. Résumé
Trucs et astuces
1. Introduction
2. Adapter le copier/coller d'un tableur pour un wiki
3. Déballage avec Python (unpacking)
4. L'underscore et Python
4.1 Dans l’interpréteur
4.2 Pour ignorer des valeurs
4.3 Dans les boucles
4.4 Pour la séparation des milliers
4.5 Pour le nommage des variables
5. Agacer les CPU et mesurer le temps de son code
6. Créer un décorateur (logger interne)
7. Bien écrire du code Python (PEP8)
7.1 Espaces
7.2 Lignes
7.3 Tabs et encoding
7.4 Encoding : UTF8
7.5 Docstring
7.6 Nom de variables
8. Résumé
Exemples
1. Introduction
2. Génération de fichiers et répertoires aléatoire
3. Graphique d'utilisation d'un serveur sur un mois
4. psutil analyse des informations des processus
5. Test continu de débit sur un accès Internet
6. Évolution de l’espace disque
7. Exécution de requête SQL sur un serveur distant
8. Améliorer Apache Index Of
8.1 WSGI
8.2 Analyse des besoins
8.3 Bottle
8.4 Uwsgi - Comment se faire un environnement de test & dev ?
8.5 Le script startup.py
8.6 Le script page_html.py
8.7 Les templates
8.8 Les fichiers de paramètres
8.9 La mise en exploitation
8.10 Le résultat
9. Résumé
Aller plus loin avec Python
1. Introduction
2. Bottle & Flask
2.1 Bottle
2.2 Flask
3. Outils
3.1 Watchdog
3.2 Paramiko
3.3 Supervisor
4. Interfaces utilisateurs
4.1 Interface graphique : Tkinter
4.2 Autres interfaces graphiques
4.3 Interface console: curses
4.4 Interface console : Urwid
5. Résumé
Pour aller encore plus loin
1. Introduction
2. Twisted
3. Brython
4. Fuse
5. Ipython et Jupyter
6. Sphynx
7. Ansible
8. Le framework Django
9. Apache Airflow
10. Résumé
Annexes
1. Ressources Python
2. Déboguer en Python
3. Compiler Python depuis les sources
4. Pourquoi être fan des expressions régulières ?
5. Les outils utilisés pour cet ouvrage
6. Création d'une machine virtuelle Debian
7. Quelques conseils et petites choses à méditer
8. La dernière section
Index
Christophe BONNET
Tour à tour ingénieur système et réseaux, administrateur de base de données, architecte système spécialisé en informatique de Gestion ou développeur, Christophe BONNET a su évoluer et se forger une expérience dans de nombreux domaines de l’informatique. Aujourd’hui ingénieur système et passionné par les langages de programmation et le monde open source à travers les systèmes d'exploitation Unix/Linux et les logiciels libres, il partage à travers ce livre son expérience dans la mise en œuvre du langage Python pour le développement d’outils système sous Linux.