Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| python:python3_pour_asr [2018/01/05 09:40] – herve ballans | python:python3_pour_asr [2018/01/09 16:42] (Version actuelle) – herve ballans | ||
|---|---|---|---|
| Ligne 3: | Ligne 3: | ||
| ====== Utiliser Python3 en Admin Systèmes et Réseaux ====== | ====== Utiliser Python3 en Admin Systèmes et Réseaux ====== | ||
| - | Note : les exemples sont testés avec iptyhon3 | + | Note : les exemples sont testés avec le programme //iptyhon3// (Python 3.6.3, IPython 5.1.0) |
| + | ===== En-tête de fichier ===== | ||
| + | |||
| + | Spécifie l' | ||
| + | |||
| + | < | ||
| + | # | ||
| + | # -*- coding: utf8 -*- | ||
| + | </ | ||
| + | |||
| + | ===== Documentation ===== | ||
| + | |||
| + | Grace aux docstrings, il est très facile (et recommandé!) de documenter son code : | ||
| + | |||
| + | < | ||
| + | def server(): | ||
| + | """ | ||
| + | </ | ||
| + | |||
| + | L' | ||
| + | |||
| + | < | ||
| + | help(server) | ||
| + | </ | ||
| + | |||
| + | soit avec l' | ||
| + | < | ||
| + | server.__doc__ | ||
| + | </ | ||
| ===== Bash vs Python3 ===== | ===== Bash vs Python3 ===== | ||
| + | |||
| + | Les exemples de cette section n'ont pas grand sens en soi, ils servent juste ici à illustrer la différence entre l' | ||
| ==== Boucles ==== | ==== Boucles ==== | ||
| Ligne 24: | Ligne 54: | ||
| </ | </ | ||
| + | ==== Tests ==== | ||
| + | |||
| + | On teste si l' | ||
| + | |||
| + | ^Bash^Python< | ||
| + | | < | ||
| + | if [ `id -u` = 0 ] | ||
| + | then | ||
| + | echo " | ||
| + | fi | ||
| + | </ | ||
| + | import os | ||
| + | current_user = os.popen(' | ||
| + | current_user = _ | ||
| + | if (current_user == 0): | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | < | ||
| ==== Fonctions ==== | ==== Fonctions ==== | ||
| Ligne 46: | Ligne 95: | ||
| def processus(**kwargs) | def processus(**kwargs) | ||
| </ | </ | ||
| + | |||
| + | ===== Module os ===== | ||
| + | |||
| + | ce module contient plusieurs objets permettant d' | ||
| ===== Modules utiles (depuis des librairies standards) ===== | ===== Modules utiles (depuis des librairies standards) ===== | ||
| Ligne 60: | Ligne 113: | ||
| Utilisation avec la classe <font inherit/ | Utilisation avec la classe <font inherit/ | ||
| - | '' | + | '' |
| - | ( //args//, // | + | |
| - | ) | + | |
| Par exemple, pour faire l' | Par exemple, pour faire l' | ||
| Ligne 89: | Ligne 140: | ||
| * Une fois que l' | * Une fois que l' | ||
| - | Si on veut garder la sortie, on peut sauvegarder le résultat dans un variable. | + | Si on veut garder la sortie, on peut sauvegarder le résultat dans un variable. Exemple : |
| - | Exemple : | + | |
| < | < | ||
| Ligne 101: | Ligne 151: | ||
| In [8]: failed_syslog_format = str(failed_syslog) | In [8]: failed_syslog_format = str(failed_syslog) | ||
| - | In [9]: failed_syslog_format.split(' | + | In [9]: failed_syslog_format.split(' |
| </ | </ | ||
| Ligne 120: | Ligne 170: | ||
| Out [10]: CompletedProcess(args=[' | Out [10]: CompletedProcess(args=[' | ||
| </ | </ | ||
| + | |||
| + | Voir la [[https:// | ||
| ==== Shlex ==== | ==== Shlex ==== | ||
| - | Le module shlex est un parseur | + | Le module shlex est un analyseur lexical qui permet d' |
| + | |||
| + | Par exemple, j'ai une adresse IP et je souhaite afficher les nombres qui la composent avec des retours chariots. | ||
| + | |||
| + | En bash (il y a peut être plus simple…) | ||
| + | |||
| + | < | ||
| + | $ ip=" | ||
| + | $ IFS=. read -a ip <<<" | ||
| + | $ printf ' | ||
| + | </ | ||
| + | |||
| + | Note : sur la dernière ligne, il faut ajouter un // | ||
| + | |||
| + | Un exemple d' | ||
| + | |||
| + | < | ||
| + | ip = " | ||
| + | |||
| + | nb = shlex.shlex(ip, | ||
| + | |||
| + | nb.whitespace += ' | ||
| + | |||
| + | for nombre in nb: | ||
| + | print(nombre) | ||
| + | </ | ||
| + | |||
| + | Voir la [[https:// | ||
| \\ | \\ | ||