Scripting System - Note de Cours
Scripting System - Note de Cours
Scripting System - Note de Cours
SEANCE 1
Chapitre 1 : Généralités
Script :
script 1, n. m., [] Énoncé organisé sous forme d'instructions qu'un INFORMATICIEN écrit dans un LANGAGE et qui sert à
faire exécuter une TÂCHE spécifique par un ORDINATEUR.
Serveur :
serveur 1, n. m., [] Ordinateur de grande capacité géré par un ADMINISTRATEUR et utilisé comme élément central dans un
réseau afin de permettre à des UTILISATEURS ou à des ORDINATEURS d'utiliser du MATÉRIEL, des LOGICIELS ou des
DONNÉES.
Mainframe :
Un serveur permet de partager les ressources d'un réseau constitué de plusieurs ordinateurs. Dans le cas d'un mainframe, il
n'y a qu'un seul ordinateur, le mainframe, tous les utilisateurs sont connectés au mainframe par des terminaux qui ne sont en
général que des claviers, écrans et imprimantes
Administrateur réseau :
administrateur [administrateur d'un RÉSEAU] Informaticien dont la responsabilité principale est de mettre en place un
RÉSEAU et de veiller à son bon fonctionnement et à celui de ses diverses composantes.
L'administrateur. Intervient sur le réseau, (administre, gère, implémente. Cela contraint l'administrateur à
créer et maintenir les fichiers graphiques / Les mots de passe donnant l'accès / Grâce à des outils logiciels, les administrateurs
de réseau peuvent piloter le réseau à partir de n'importe quel poste de travail.
Un serveur est un ordinateur ou un système qui met des ressources, des données, des services ou des
logiciels à la disposition d’autres ordinateurs, qualifiés de « clients », sur un réseau.
En théorie, un ordinateur est considéré comme un serveur à partir du moment où il partage des
ressources avec une machine cliente.
Un système x peut simultanément fournir des ressources à un système y et utiliser celles que ce
dernier met à sa disposition. En d’autres termes, un périphérique peut agir à la fois comme serveur et comme
client.
La définition du serveur a ensuite évolué parallèlement au progrès technologique. De nos jours, un
serveur est parfois un simple logiciel qui tourne sur un ou plusieurs dispositifs informatiques physiques,
auquel cas on le qualifiera généralement de serveur virtuel. À l’origine, les serveurs de ce type permettaient
d’étoffer le nombre de fonctions qu’un serveur physique était en mesure d’accomplir à lui seul. Aujourd’hui,
les serveurs virtuels s’exécutent souvent sur le matériel d’un fournisseur tiers sur internet : on parle alors
de cloud computing.
Scripting system
Un serveur peut être conçu pour effectuer une seule et même tâche. C’est le cas du serveur mail, ou
serveur de messagerie, dont le rôle consiste à accepter et stocker des e-mails, avant de les mettre à la
disposition du client qui les sollicite. D’autres serveurs sont capables d’assurer différentes tâches, comme un
serveur de fichiers ou un serveur d’impression, qui va à la fois stocker les fichiers et accepter les tâches
d’impression que lui confient les clients, puis les transmettre à une imprimante connectée au réseau.
Serveurs de fichiers
Les serveurs de fichiers hébergent et diffusent des fichiers que peuvent partager une multitude de clients ou
d’utilisateurs. Grâce au stockage central des fichiers, il est plus simple d’effectuer des sauvegardes et de
déployer des solutions de tolérance aux pannes que si on tentait d’assurer la sécurité et l’intégrité des fichiers
sur chacun des appareils appartenant à une entreprise. La partie matérielle du serveur de fichiers est parfois
conçue pour maximiser les vitesses de lecture et d’écriture afin d’optimiser les performances.
Serveurs d’impression
Le serveur d’impression permet d’administrer et de répartir les fonctions d’impression. Au lieu de connecter
une imprimante à chaque poste de travail, on fait appel à un serveur commun qui va prendre en charge les
demandes d’impression de beaucoup de clients. De nos jours, les modèles d’imprimantes les plus
volumineux et sophistiqués intègrent parfois leur propre serveur d’impression, ce qui évite de recourir à un
serveur informatisé. Ce serveur interne fonctionne comme les autres, en répondant aux demandes
d’impression émanant d’un client.
Serveurs d’applications
Le serveur d’applications offre un contexte d’exécution aux ordinateurs clients pour leur éviter d’exécuter
des applications localement. Les serveurs de ce type hébergent la plupart du temps des applications
gourmandes en ressources que se partage une large communauté d’utilisateurs. Par ce biais, les clients ne
sont plus tenus de disposer de ressources suffisantes pour faire tourner les applications, et il devient inutile
d’installer et de garder à jour des logiciels sur une multitude de machines : on se contente de le faire sur le
serveur, et tous les utilisateurs en bénéficient.
Serveurs DNS
Les serveurs DNS (pour Domain Name System) sont des serveurs d’applications utilisés pour résoudre les
noms de domaines des ordinateurs clients, c’est-à-dire traduire des noms conçus pour être compris de
l’homme en adresses IP exploitables par une machine. Le système DNS est une base de données largement
répandue qui contient des noms et d’autres serveurs DNS dont chacun peut servir à demander le nom d’un
ordinateur qui, autrement, resterait inconnu. Quand un client a besoin de l’adresse d’un système, il envoie à
un serveur DNS une requête DNS portant le nom de la ressource visée. Le serveur DNS répond en lui
fournissant l’adresse IP nécessaire, qu’il trouvera au sein de sa table de noms.
Serveurs de messagerie
Les serveurs de messagerie sont un des types de serveurs d’applications les plus répandus. Ils reçoivent les
courriers électroniques adressés à un utilisateur et les gardent en mémoire jusqu’à ce qu’ils soient sollicités
par un client au nom de l’intéressé. Posséder un serveur mail permet de configurer et de rattacher
correctement une machine au réseau à tout moment. Elle sera alors prête à envoyer et recevoir des messages
au lieu de demander à toutes les machines clientes de faire tourner en continu leur propre sous-système de
messagerie.
Serveurs web
Les serveurs web comptent parmi les catégories de serveurs les plus répandues sur le marché à l’heure
actuelle. Un serveur web est un genre de serveur d’applications qui héberge des logiciels et des données que
les utilisateurs vont solliciter sur internet ou sur un intranet. Ces serveurs répondent aux demandes de pages
web ou d’autres services web qui proviennent de navigateurs tournant sur des ordinateurs clients. Parmi les
serveurs web les plus populaires, on peut citer ceux d’Apache, de Microsoft Internet Information Services
(IIS) et les serveurs Nginx.
Serveurs virtuels
Les serveurs virtuels sont en train de conquérir le monde de l’informatique. Contrairement aux serveurs
classiques, qu’on installe comme un système d’exploitation sur une machine physique, les serveurs virtuels
ne peuvent tourner que sur un logiciel spécialisé appelé hyperviseur. Chaque hyperviseur peut exécuter
simultanément des centaines, voire des milliers de serveurs virtuels. L’hyperviseur présente le matériel
virtuel au serveur comme s’il s’agissait de matériel physique. Le serveur virtuel utilise le matériel virtuel
comme s’il s’agissait de hardware normal, et l’hyperviseur confie les tâches de calcul et de stockage à la
machine sur laquelle il est installé, qui est commune à tous les autres serveurs virtuels.
Serveurs proxy
Un serveur proxy fait office d’intermédiaire entre un client et un serveur. Souvent utilisé pour isoler soit les
clients, soit les serveurs, dans une optique de sécurité, un serveur proxy reçoit les requêtes que lui transmet
le client. Au lieu de répondre à ce dernier, il transfère la demande à un autre serveur ou processus. Le
serveur proxy reçoit la réponse émanant du deuxième serveur, puis répond au client d’origine comme si la
réponse émanait de lui. De la sorte, le client et le serveur qui lui répond n’ont pas besoin d’être connectés
l’un à l’autre.
Comment choisir un serveur informatique ? Cela peut être long et compliqué pour une entreprise si on ne
sait pas sur quels critères se baser.
UN SERVEUR INFORMATIQUE POUR QUEL USAGE ?
La première question à se poser lorsqu'on choisit un serveur : Pourquoi ai-je besoin d'un serveur ? Pour
quelles fonctions ? Quel type de logiciel doit-il être capable d'exécuter ?
Parmi ces fonctions on peut retrouver :
• Le stockage de fichier • Logiciels métiers
• La téléphonie sur IP • Annuaire d'entreprise
• La messagerie • Hébergement de site web
• La vidéo sur IP • Intranet
• Hébergement de base de données • Etc...
C'est à partir de ces usages que le choix de la majorité des caractéristiques du serveur découlera.
PROCESSEUR, MÉMOIRE VIVE ET DISQUES DU SERVEUR
De la même manière que pour un pc, les composants devront êtes sélectionnés en fonction du type
d'application que votre serveur doit être capable d'exécuter.
Si celui-ci doit supporter des logiciels de base de données la configuration choisie devra être plus
puissante que celle utilisée pour le simple stockage de fichiers.
Pour faire correctement le choix de ces composants, reportez-vous aux configurations requises des
applicatifs que vous souhaitez exécuter.
CHOIX DU SYSTÈME D'EXPLOITATION DE VOTRE/VOS SERVEURS
En fonction des logiciels, les éditeurs valident un certain nombre de système d'exploitation : Microsoft
Windows Server, RedHat Enterprise, SUSE Linux Enterprise.
Si vous n'avez aucun prérequis, le choix de l'OS se fera en fonction de vos habitudes : Windows ou Linux,
une version avec support commercial ou support communautaire, ...
CHOIX DU FORMAT (RACK, TOUR, BLADE)
Il existe trois types de format physique pour les serveurs :
Les serveurs tour Ils sont très similaires aux unités centrales d'ordinateur fixe. Un de leurs
principaux avantages est qu'ils peuvent être installés dans n'importe quelle pièce
d'une entreprise.
Peu encombrant, en fonction des configurations ils peuvent offrir des
performances similaires aux autres formats de serveurs.
Deux points de vigilance, même si ces serveurs peuvent s'installer facilement «
partout », ils nécessitent souvent une arrivée électrique à fort ampérage et
peuvent entrainer des nuisances sonores et thermiques (dégagement de chaleur).
Les serveurs rack Destinés à être installés dans une baie, les serveurs rack offrent une densité
importante (plus de 40 serveurs par m2) et l'avantage de présenter un accès
facile aux machines pour les opérations de maintenance.
Comparé aux serveurs tours, il existe des configurations plus performantes (4
voire 8 processeurs par exemple).
Les serveurs Lame (ou Peu encombrant et énergétiquement efficient, le format lame est le plus récent.
serveur blade) Contrairement aux serveurs rack qui s'installent dans des baies, les serveurs
lames se glissent dans un châssis dédié et offrent ainsi une densité supérieure.
Leur temps de mise en service est également inférieur au format rack : pas de
mise en rack et pas de câblage, par ailleurs les commutateurs réseaux sont
généralement inclus dans le châssis.
Le tout s'administre depuis une console unique.
CHOIX DE L'ALIMENTATION
Pour des raisons de sécurité, il est fortement recommandé d'utiliser une alimentation dite « redondante ».
Constitué d'au minimum deux alimentations identiques, celle-ci permet de prévenir l'extinction de la
machine en cas de perte d'une des alimentations.
CHOIX DE LA CONNECTIQUE RÉSEAU
Les serveurs offrent un large choix de connectique réseau qui permet de répondre à tous types de besoin :
cartes réseaux 1, 10 Gb ou 40 Gb, connectiques cuivre ou fibre, support des protocoles IP, FC, InfiniBand, ...
CHOIX D'UNE SOLUTION DE MANAGEMENT
Les serveurs intègrent une solution de management et supervision à distance, plus ou moins évoluée. En
fonction de vos besoins, il peut être nécessaire de recourir à des fonctions optionnelles :
Redémarrage à distance ;
Accès console à distance (équivalent d'un KVM) ;
Port réseau dédié pour le réseau de management.
CHOIX DE LA GARANTIE
Les serveurs occupant un rôle critique dans l'entreprise, il ne faut pas négliger le choix d'un contrat de
support.
En effet, la plus part des serveurs proposent de « base » une garantie d'une durée de 1 à 3 années, en retour
atelier ou intervention sur site sous 1 à 2 jours ouvrés.
Afin d'avoir un engagement sur les délais de réponse et d'intervention, il est possible de souscrire un contrat
de support répondant à vos problématiques : durée de support de 3 à 5 ans, intervention sous 4h, support
unifié matériel et logiciel, ...
SEANCE 2
UNIX est un système d'exploitation multi-utilisateurs et multitâches. Il est largement utilisé dans les
environnements client-serveur. Le système d'exploitation serveur UNIX est exécuté à l'aide d'un langage de
programmation C de haut niveau qui prend en charge plusieurs plates-formes, ce qui le rend adapté à de
nombreuses architectures matérielles.
Il intègre le protocole TCP/IP, ce qui lui confère une stabilité et une sécurité supérieures. Mais il est
très coûteux, et il existe de nombreuses versions différentes de systèmes d'exploitation UNIX provenant de
différents fournisseurs, de sorte qu'il n'y a pas de système d'exploitation de serveur UNIX standard.
Windows server OS est un système d'exploitation applicable au cloud, qui prend en charge la gestion
de la mémoire virtuelle et possède une interface graphique intuitive. En outre, il est plus facile à utiliser que
la plupart des systèmes d'exploitation basés sur Linux et il est facile à installer. Mais le système
d'exploitation Windows Server est payant. Et il est confronté à un plus grand nombre de menaces de sécurité,
ce qui nécessite le téléchargement en temps utile des dernières mises à jour de sécurité pour protéger le
système contre ces menaces et assurer une sécurité permanente.
L’objectif du cours est de pouvoir modifier un serveur grâce aux scripts : Au 21e siècle l’un des
langages les plus utilisés est le langage PYTHON (bien que crée dans les années 90 mais amélioré depuis peu).
Un script Python est un fichier texte enregistré avec l’extension .py que l'on peut créer par exemple
avec un simple éditeur de texte comme le bloc note de Windows. Mais il est plus pratique d'utiliser un
éditeur adapté pour l'écriture de scripts, comme Notepad++, PyScripter, Geany ou Bluefish, pycham.
a. Pourquoi python ?
Simplicité
Très simple pour apprendre donc parfait pour commencer à programmer ;
Bonne lisibilité de la synthase du code
Puissance
Très performante pour nos programmes ;
Enormément utilisé dans le monde scientifique pour des calculs numériques par exemple
Communauté
Possède une assez grande base de communauté pour les : échanges , interaction ; Nous pouvons ainsi interagir
avec des personnes en cas de besoins , si par exemple vous rencontrez un problème.
PREREQUIS :
Il faut :
Un interpréteur ou environnement : c’est tout simplement un endroit ou va s’exécuter notre code python,
parce que par défaut vous ne pouvez pas le faire n’importe comment sur votre ordinateur. Accessible sur le
site : https://www.python.org ensuite se rendre dans la catégorie Download et télécharger selon la version
de votre système d’exploitation. Il vous suffit juste de l’installer de manière classique.
Un IDE : C’est un environnement de développement intégré (PYCHAM), télécharger la version
Communauty qui est open source donc libre
C’est le langage le plus populaire en ce moment, c’est un langage versatile, on l’utilise dans plusieurs domaine :
IA : Intelligence Artificielle
Python est utilisé dans les entreprise comme : GOOGLE, FACEBOOK, NASA, QUORA, NETFLIX , DROPBOX ,
MICROSOFT et autres
En Amérique et en Europe python est le langage le plus populaire contrairement en Afrique et autres continents qui
trainent encore le pas à cause du manque d’implémentation de l’intelligence artificielle.
SEANCE 3
C’est un informaticien ayant la responsabilité de gérer et de surveiller les performances des serveurs
informatiques dans le centre de données d'une entreprise.
Également appelés administrateur système, les administrateurs de serveur travaillent quotidiennement avec les
serveurs et les réseaux pour s'assurer que les systèmes fonctionnent efficacement et continuent de fonctionner
sans temps d'arrêt ni dégradation des performances.
Exécution :
Lancer l’invite de commande de Windows (3 fois : 1 fois pour le serveur, et les 2 autres pour le client1 et
client2)
A l’aide des commandes « cd » atteindre le répertoire « chatroom »
Exécuter chaque fichier : avec la commande « python » : python3 serveur.py pour le serveur et python3
client.py pour le client
Il existe des bibliothèques python pour l’automatisation des tâches effectuées par un « SysAdmin »,
a. Bibliothèques de script python
Python dispose de trois bibliothèques – Paramiko, Netmiko et NAPALM – dédiées
au pilotage des équipements réseau.
Chacune d’elle apporte une couche d’abstraction supplémentaire pour simplifier la
communication avec les équipements réseau.
Les utilisateurs qui débutent ont juste besoin de comprendre la manière dont s’enchaînent les
commandes et comment sont structurées les données, notamment les « dictionnaires Python ».
c. Script permettant de demander à un routeur Cisco sa table ARP
Les lignes un à cinq importent les bibliothèques supplémentaires dont nous avons besoin, et
définissent l’adresse IP du routeur que nous allons interroger.
Les lignes sept à quatorze créent une connexion SSH vers le routeur avec l’identifiant tester et
le mot de passe foobar. Une commande est envoyée pour désactiver le scrolling du texte à l’écran.
Les lignes 16 à 18 envoient la commande « show arp » directement interprétable par le
routeur.
La ligne 21 lit le résultat de cette commande et l’affiche. La connexion est fermée lorsque le
script se termine.
Voici le
résultat :
i
SSH, ou Secure Socket Shell, est un protocole réseau qui permet aux administrateurs d'accéder à distance à un ordinateur,...
Paramiko se limite véritablement à la simple fourniture d’une interface SSH vers les machines du
réseau.
Réécrire intégralement chaque script pour chaque équipement réseau à automatiser n’est pas une
bonne pratique. La bibliothèque Netmiko résout ce problème.
Netmiko utilise la définition device_type qui puise dans sa base de connaissances interne pour
savoir comment gérer les communications avec l’équipement cible, ce qui évite à l’administrateur
de se hasarder à des spécificités dans les commandes et les lectures de résultat. Reste qu’il ne
permet pas de changer les paramètres de la cible. C’est là qu’entre en scène NAPALM.
NAPALM ne sait travailler qu’avec un nombre plus restreint d’équipements ; il reconnaît ceux de
marques Arista, Juniper et Cisco.
Pour commencer, NAPALM utilise des fonctions get pour récupérer les paramètres d’un
équipement. Le script suivant utilise la fonction get_arp_table() pour faire la même chose que les
scripts précédents :
Le script à écrire est plus long avec NAPALM qu’il ne l’est avec Netmiko, car il nécessite
d’inclure plus de bibliothèques de fonctions et que les paramètres de connexion soient spécifiés
différemment, comme on le voit dans les lignes 2 à 13.
La connexion est établie dans les lignes 15 à 17.
Ensuite, les informations de la table ARP sont récupérées, mais contrairement à précédemment
NAPALM les reformate, pour qu’elles se présentent comme un dictionnaire Python.
La ligne 19 affiche les données formatées de la sorte :
Le mérite de ce format dictionnaire est qu’il s’agit d’une structure de données directement
réutilisable dans Python. Il devient dès lors possible de remplacer, fusionner, comparer les données
de ce dictionnaire afin de déployer, corriger ou adapter une configuration.
d. Script Python qui ping les adresses IP et indique si chaque ping a réussi
NB : os.system a été remplacé par subprocess.call. Cela évite la vulnérabilité d' injection de
shell dans les cas où votre chaîne de nom d'hôte pourrait ne pas être validée.
Exemple d’utilisation « subprocess »
Ce code itère sur toutes les adresses IP disponibles, les ping et vérifie la réponse. Si l'écho est
reçu, cela signifie que l'hôte est connecté et dans le cas où aucun écho n'est reçu, il semble que
l'hôte soit en panne.
Le serveur cible doit avoir des ports ouverts qui peuvent accepter et initier de nouvelles
connexions. Lorsque le serveur reçoit le paquet SYN du nœud client, il répond et renvoie un
accusé de réception - le paquet ACK ou le paquet SYN/ACK.
Le nœud client reçoit le SYN/ACK du serveur et répond avec un paquet ACK.
Une fois ce processus terminé, la connexion est créée et l'hôte et le serveur peuvent communiquer.
généralement le temps de 2 minutes maximum pour produire une sortie au format, tel ou tel port est
ouvert ou fermé.