Scripting unix ROUTEURS ET COMMUTATEURS OLIVIER DEHECQ



Documents pareils
Algorithmique et Programmation, IMA

TP1 - Prise en main de l environnement Unix.

Environnements informatiques

Initiation à la programmation en Python

Cours Programmation Système

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)


Introduction aux Systèmes et aux Réseaux

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

sshgate Patrick Guiran Chef de projet support

Unix/Linux I. 1 ere année DUT. Université marne la vallée

TP 1 Prise en main de l environnement Unix

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

STAGE IREM 0- Premiers pas en Python

HighPush. document /06/2009 Révision pour version /11/2008 Revision pour la /10/2008 Documentation initiale.

EXCEL TUTORIEL 2012/2013

Manuel d utilisation de la plate-forme de gestion de parc UCOPIA. La mobilité à la hauteur des exigences professionnelles

Année Cours Unix-Shell. par. Karam ALLALI. Ecole Spéciale d Informatique

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

TP1 : Initiation à l algorithmique (1 séance)

M55 HD. Manuel Utilisateur

Modes Opératoires WinTrans Mai 13 ~ 1 ~

1. Structure d'un programme FORTRAN 95

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

> INSTRUCTIONS POUR LA FACTURATION DES BONS DE COMMANDE

Club informatique Mont-Bruno Séances du 08 et 20 novembre 2013 Présentateur : Guy Bélanger Co-auteur : Réjean Côté

SOMMAIRE AIDE À LA CRÉATION D UN INDEX SOUS WORD. Service général des publications Université Lumière Lyon 2 Janvier 2007

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Le système GNU/Linux IUP NTIC /11/05

Numbers sur ipad. Atelier Formation Numbers sur ipad. [Notes extraitres de l'aide en ligne]

Stopack : logiciel pour l entrepôt

Introduction au Système d Exploitation Unix/Linux

Utilisation d objets : String et ArrayList

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

Guide d'utilisation du téléphone IP Thomson ST-2030 G

Note de cours. Introduction à Excel 2007

SOFI Gestion+ Version 5.4. Echanges de données informatiques Spicers Sofi gestion+ Groupements. SOFI Informatique. Actualisé le

Première partie. Qu est-ce qu un script?

Utilisation du client de messagerie Thunderbird

Services bancaires par Internet aux entreprises. Guide pratique pour : Rapports de solde Version

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Client windows Nagios Event Log

PRÉSENTÉ PAR : NOVEMBRE 2007

1. Introduction Création d'une requête...2

Guide de l Administrateur

Guide d'installation de la base de données ORACLE 10g ( ) pour linux FEDORA CORE 4.

Guide utilisateur. Parrot MKi9100. Français. Parrot MKi9100 Guide utilisateur 1

Harp - Basculement des élèves en début d année

PromoPost Manuel d utilisation

Manuel de mise en page de l intérieur de votre ouvrage

Ce tutorial indique également comment récupérer les enregistrements effectué à partir du décodeur sur son pc.

Services bancaires par Internet aux entreprises. Guide pratique pour : Transfert de fichiers Version

MRTG & RRD Tool. Multi Router Traffic Grapher

Paiement sécurisé sur Internet. Fonctionnalités du Pack Factures

COURS WINDEV NUMERO 3

Présentation du langage et premières fonctions

Module d anonymisation

FileMaker Server 14. Guide de démarrage

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Module : Informatique Générale 1. Les commandes MS-DOS

Installation d ORACLE 10g sous Debian Etch

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Modélisation et Gestion des bases de données avec mysql workbench

1 ) L élaboration des factures, des bordereaux de livraison et des factures proforma.

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

Cours de Systèmes d Exploitation

TD3 - Facturation avec archivage automatisé

Structure fonctionnelle d un SGBD

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

GUIDE D UTILISATION VOCALYS CW32 CENTRALE-TRANSMETTEUR

Aide-Mémoire unix. 9 février 2009

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Cours d algorithmique pour la classe de 2nde

TD3: tableaux avancées, première classe et chaînes

Introduction à l Administration Systèmes et Réseaux

Encryptions, compression et partitionnement des données

Guide d'utilisation du logiciel de NEWSLETTERS

Manuel d installation et d utilisation du logiciel GigaRunner

Version 6.20 Guide d Utilisation

Corrigé des TD 1 à 5

Utiliser Glary Utilities

Guide Numériser vers FTP

JULIE SMS V2.0.1 NOTICE D INSTALLATION ET D UTILISATION

Prosp'Action GUIDE UTILISATEUR. Conquête et fidélisation de clients

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Afin d accéder à votre messagerie personnelle, vous devez vous identifier par votre adresse mail et votre mot de passe :

GUIDE D UTILISATION ADSL ASSISTANCE

Initiation à la Programmation en Logique avec SISCtus Prolog

Bon ben voilà c est fait!

Manuel du logiciel PrestaTest.

Transcription:

2016 Scripting unix ROUTEURS ET COMMUTATEURS OLIVIER DEHECQ

Table des matières Signalétique... 3 1 Paramétrage de vi pour le scripting... 4 2 Notions de bases... 5 3 Les commandes internes au shell... 7 4 Les conditions... 8 5 Utilisation des fonctions...11 6 Des commandes pour les scripts...12 7 Plus loin avec les variables...14 Olivier DEHECQ http://aide.informatique1.fr Page 2

Signalétique Nota, astuce : Contient une partie serveur web qui traite les réponses statiques. Important, à retenir : Ceci est une chose importante Commande MS-DOS C:\> c:\tomcat5.5\bin\startup.bat Commande UNIX # /tomcat5.5/bin/startup.sh Commande SQL connect / as sysdba Chemin de fichier, ssier, emplacement sur le disque Fichier web.xml Exemple de contenu de cument <Host name="localhost" appbase="webapps" unpackwars="true" autodeploy="true" /> Contenu du fichier web.xml <welcome-file>index.html</welcome-file> Contenu du fichier server.xml port "8080" port d écoute du connecteur Autre contenu de fichier : <role rolename="ruserhelloworld"/> Spécifique aux cuments xml : Balise Nom de propriété Valeur Commentaire Olivier DEHECQ http://aide.informatique1.fr Page 3

1 Paramétrage de vi pour le scripting Editer le fichier ~/.exrc : set numbers set ignorecase set syntax=on set nocompatible set autoindent afficher les numéros de lignes couleurs de syntaxe Olivier DEHECQ http://aide.informatique1.fr Page 4

2 Notions de bases 2.1 Le she bang #!/bin/bash toujours placer en début de script, indique le shell utilisé, sinon le script s exécute en shell utilisateur Attention : pour Unix, on ne peut utiliser que le bourne shell : #!/bin/sh 2.2 Variable VS Variable d environnement set env liste de toutes les variables, uniquement dans le shell en cours liste des variables d environnement, dans tous les shell et sous-shell var=toto export var=toto Une variable non exportée n existe que dans le shell où elle a été définie crée une variable crée une variable d environnement Attention : une variable ne peut pas commencer par [0-9], ne contient que [a-z]+[_]+[0-9] echo $$ echo $? numéro de processus courant code retour (=0 : la commande s est bien passée ;!=0 : la commande ne s est pas déroulée comme prévu $1 - $9 argument entré à la suite de la commande d exécution du script echo $#./test.sh olivier Dehecq echo $1 olivier echo $2 dehecq nombre d arguments envoyés (2 dans la commande précédente) isole tous les caractères " " isole tous les caractères sauf ` \ $ 2.3 Caractères spéciaux du shell ; ls ; date sert à enchainer deux commandes, exécutées l une après l autre && && la commande à droite sera exécutée que si la partie gauche s est bien exécutée (ex. : ls test.sh && echo OK) la commande à droite ne sera exécutée que si la commande à gauche ne s est pas bien exécutée (ex. : ls test.sh echo KO) Olivier DEHECQ http://aide.informatique1.fr Page 5

2.4 Regroupement des commandes ( ls /bin ; ls /usr/bin ) wc l ce qui est entre ( ) est exécuté dans un sous shell { ls /bin ; ls /usr/bin; } wc l ce qui est entre { ; } est exécuté dans un sous shell ls xys { echo "fichier introuvable" ; var = Alerte ; } 2.5 Utiliser les couleurs dans le shell couleur caractères fond attribut Noir 30 40 0 : aucun Rouge 31 41 1 : gras Vert 32 42 4 : souligné Brun 33 43 7 : inversé Bleu 34 44 8 : invisible Majenta 35 45 9 : barré Cyan 36 46 Blanc 37 47 Exemple \033[1;32m : \033[ : annonce de couleur 1;32 : arguments m : fin de la définition Le résultat serait nc du texte vert, en gras. Codes couleurs et codes attributs Olivier DEHECQ http://aide.informatique1.fr Page 6

3 Les commandes internes au shell La commande read : La commande read stocke une chaine entrée sous la variable voulue. Remplace PAUSE tel.sh : echo "saisissez votre nom : " read NOM echo "saisissez votre numéro de téléphone : " read TEL echo "bonjour $NOM, votre numéro de tel est le : $TEL" La commande echo : -e en bash, interprète les caractères spéciaux \n nouvelle ligne \t tabulation \c enlève le retour à la ligne après echo e "\ncoucou\n" La commande exec : Exécute une commande dans le shell en cours puis le quitte exec echo "bonjour et au revoir" La commande exit : Arrête le shell courant et définit la valeur de? Nota : exit 22 ne quitte pas le script La commande expr : Calcul arithmétique. Préférer let et (( )) Olivier DEHECQ http://aide.informatique1.fr Page 7

4 Les conditions 4.1 La commande test test ou [ ] [ -f xyz ] echo KO Test sur les fichiers : -f fichier -d répertoire -x droit d exécution (-w r) -s taille >0 Opérateur de chaine : [ "$NOM" = "root" ] && égal à!= différent de -n variable non nulle -z variable nulle [ -z "$1" ] Test sur les valeurs numériques : [ "$AGE" eq 18 ] égal -ne -gt ; -ge -lt ; -le différent > ; < ; Combinaisons : -a et -o ou! négation \( \) regroupement Pour la comparaison de chaines : * 0 à n caractères? 1 caractère [...] un caractère parmi ceux entre [] [!...] un caractère qui n est pas entre [] Tests de chaines : shopt grep extglob it être sur [on] : shopt s extglob (activer) shopt u extblob (désactiver)?(...) 0 à 1 fois la chaine *(...) 0 à n fois la chaine +(...) 1 à n fois la chaine @(...) 1 fois la chaine!(...) 0 fois la chaine *(......) de 0 à n fois la chaine1 ou la chaine2 (fonctionne avec *+@!) Olivier DEHECQ http://aide.informatique1.fr Page 8

4.2 if else 4.3 Case [[ var =?([+-]+([0-9]) ]] && echo "Le nombre entier est valide" if condition if condition if condition then then then action1 action1 action1 action2 action2 action2 fi else else if condtion2 elif et else if fi : elif n attend pas de fi action3 fi else if attend fi à la fin de la boucle case $COULEUR in noir) echo "vous avez choisi noir" ;; blanc) echo "c est le blanc qui est choisi" ;; rouge) echo "là c est le rouge" ;; then action3 fi jaune orange) echo "orange ou jaune c est du pareil au même" ;; *) echo "la couleur choisie n est pas autorisée" ;; esac 4.4 while Tourne en boucle tant que la condition est vraie. while condition while [ -z "$NOM" ] action1 read p "Entrez votre nom : " NOM action2 Attention : while : peut créer une boucle infinite while : echo "1) création d un compte utilisateur" echo "2) modification d un compte utilisateur" echo "3) suppression d un compte utilisateur" echo "q) quitter read A case $A in créer-compte.sh ;; modif-compte.sh ;; suppr-compte.sh ;; q) exit 0 ;; *) echo "saisie incorrecte" ;read ;; esac Olivier DEHECQ http://aide.informatique1.fr Page 9

4.5 until 4.6 for Tourne en bouche jusqu à ce que la condition soit vraie. Opposé de while until condition until [ -n "$NOM" ] action1 read p "Entrez votre nom : " NOM action2 Test sur des valeurs inconnues, liste for VAR in * for A in *.rpm echo $VAR rpm qpl $A grep libtruc.so >/dev/null && echo $A for VAR in 1 2 3 toto (renverrait "1 2 3 toto". Pour isoler on utilise IFS 1 ) echo VAR (1 /n 2 /n 3 /n toto) Nota set grep ^IFS IFS est utilisé comme champ de séparation par for. \t\n par défaut. Espace, tabulation, entrée for (( i=10 ; i >=1 ; i-=1 )) echo "mise à feu dans $i sec." sleep 1 echo '!!! BOUM!!!' valeur initiale ; condition ; incrémentation/décrémentation 1 IFS : champ de séparation utilisé par for. \t\n par défaut. espace, tabulation, entrée Olivier DEHECQ http://aide.informatique1.fr Page 10

5 Utilisation des fonctions Une fonction peut être présente : dans le script qui l exécute dans un autre fichier Bienvenue() { echo "Bienvenue $LOGNAME" echo Nous sommes le `date +%D` } Bienvenue Attention : la commande it être lue par le shell AVANT d être appelée!! création de la fonction appelle la fonction 5.1 Arguments dans les fonctions Bienvenue() { echo "Bienvenue $2 $1" rappelle les arguments 2 et 1 echo Nous sommes le `date +%D` } read p "quel est votre prénom : " PRENOM read p "quel est votre nom : " NOM Bienvenue $PRENOM $NOM 5.2 Externaliser les fonctions Intégration d une fonction externe dans un script A propos de «l include» (appel de fonction) :. fichier.fonction est le chemin relatif vers la fonction. on peut entrer le chemin absolu :. /data/scripts/fichier.fonction Olivier DEHECQ http://aide.informatique1.fr Page 11

6 Des commandes pour les scripts eval : uble évaluation vert="\033[32 ;1m" rouge="\033[31 ;1m" read p "Choisissez une couleur (vert ou rouge) : " COULEUR echo e "$$COULEUR Bonjour" pas bon car $$ renvoit le PID 2 eval echo e "\$$COULEUR Bonjour" trap : réaffecter les signaux envoyés au processus Nota : on ne peut pas renvoyer kill -9 trap commande de remplacement signal trap 'rm f *.tmp ;exit1' INT TERM clear : script : clear Affiche un écran vide. Ne vide pas l écran calcule $couleur puis $vert ou $rouge script Enregistre tout ce qui apparaît à l écran dans un fichier tr : remplacement de caractère, suppression de ublons. Mode caractère cat fonctions.sh tr 'abc' 'yxz' remplace a par x, b par y, c par z tr '[:lower :]' '[:upper:]' remplace les minuscules par des majuscules tr d 'abc' tr s '\n' supprime les a, les b et les c supprime les lignes vides tr s '\t' ' ' remplace les \t par des espaces, remplace les ublons d espaces cut : découpage vertical (caractère/champ) cat /etc/passwd cut c 1,5-10 récupère les caractères 1 et 5 à 10 (collés) cut f1 d: récupère le 1er champ, délimiteur : who tr s ' ' ' ' cut f1,4 d' ' split : découpage de fichiers en blocs de lignes : split gros-fichier.log petit-fic- petit-fic-aa petit-fic-ab petit-fic-ac Nota : l inverse de split est cat cool?? > fusion.log sort : trier les colonnes cat client sort cat client sort k2 -k3n -k2r -k1,1 k3n enlève les espace en trop, sélectionne les champs par défaut découpe en morceaux de 100 lignes trie de A à Z du 1er caractère jusqu au dernier caractère trie de A à Z de la 2e colonne jusqu au dernier caractère trie de 0 à 9 de la 3e colonne jusqu au dernier caractère trie de Z à A de la 2e colonne jusqu au dernier caractère trie de A à Z du champ1 au champ 1 puis de A à Z du 3e champ à la fin sort b k4.5 k4.3,4.4 k4.1,4.2 b : ne pas tenir compte des espaces avant k4.1,4.2 : du champ4 1er car au champ4 2e car 2 echo $$ numéro de processus courant Olivier DEHECQ http://aide.informatique1.fr Page 12

uniq : supprimer les lignes consécutives en plusieurs exemplaires Attention : les lignes DOIVENT ETRE CONSECUTIVES, on fait un sort avant! uniq [options] fichier1 [fichier2 ] -c chaque ligne est préfixée du nombre d occurrences sort fic1 uniq -d n affiche que les lignes en plusieurs exemplaires -f3 compare les 3 premiers champs sur la ligne. (-w3 caractères) -i ignore la casse 6.1 sed : recherches, remplacement sed 's/martin/henry/' clients sed i 's/martin/henry/' clients sed 's#henry#martin#' clients sed 's/henry/martin/g' clients sed 's/henry/martin/2' clients sed '3 s/henry/martin/' clients sed n'/martin/p' clients sed n '/Martin/=' clients Henry remplacé par Martin. Sortie écran par défaut Henry remplacé par Martin. Modifie le fichier on peut remplacer le séparateur de chaîne traiter toutes les occurrences de ligne remplacer seulement la 2e occurrence de ligne traiter seulement la 3e ligne afficher uniquement les lignes contenant Martin afficher les n des lignes contenant Martin sed n '/Dupont/,/Martin/p' clients afficher du 1 er Dupont au 1 er Martin sed '/Martin/d' clients sed '/Martin/!d' clients sed '/Dupont/i<chaine>' client Créer un fichier de commandes : Contenu du fichier sed.commande supprimer les lignes contenant Martin /Dupont/i---attention\nmauvais payeur--- /Dupont/a---mais son compte est bien garni--- sed f sed.commande clients pour l exécuter 6.2 awk : super puissant awk '/bash/ {print $0}' /etc/passwd supprimer les lignes ne contenant pas Martin ajouter une chaine dans la ligne avant Dupont (a après) affiche toute la ligne contenant bash awk F: '/bash/ {print $1}' /etc/passwd affiche le champ1 (séparateur :) awk F: '/bash$/ {print "n : " NR,$1 "UID : " $3 "Répertoire : " $6}' Nota : NR = numéro de ligne awk F: '$1 ~/user/ {print $0}' /etc/passwd NF : nombre de champs sur la ligne $NF : contenu du dernier champ sur la ligne afficher toute la ligne nt le champ1 contient user Olivier DEHECQ http://aide.informatique1.fr Page 13

7 Plus loin avec les variables Substitution des variables echo ${nom - invité} affiche $nom. Si n existe pas : affiche «invité» echo ${nom :- invité} affiche $nom. Si n existe pas ou vide : affiche «invité» (utile après un read) echo ${nom :=invité} affiche $nom. Si n existe pas ou vide : définit nom= «invité» while ${#tel!= 10} nombre de caractères de $tel, teste si 10 var=fic.save;echo ${var#??} retire (de la gauche vers la droite) 2 caractères quelconques echo ${var#.*} retire (de la gauche vers la droite) la 1ere occurrence trouvée de.* echo ${var##.*} retire (de la gauche vers la droite) la dernière occurrence trouvée de.* echo ${var%/*} retire (de la droite vers la gauche) la 1ere occurrence trouvée de /* echo ${var%%/*} retire (de la droite vers la gauche) la dernière occurrence trouvée de /* L arithmétique entière : let et (( )) typeset i var=10 déclarer var de type integer et égale à 10 unset var=toto let var=5+10 let nb=var*2 enlève le typeset calcule et attribue à var=15 calcule et attribue à nb=30 (( nb = var * 2 )) même chose que (( nb=$var*2 )) Incrémenter (( nb=nb+1 )) ou (( nb+=1 )) Comparer min=100 (( heure=min/60 )) (( minutes=min%60 )) echo $(( heures=min/60 ))H$(( minutes=min%60 ))min < > <= >=!= (different) == (égal) && (et) (ou)! (non) (( k==i+j && h==k*2 )) ; echo $? Les variables de tableau client=dupont echo $client echo ${client} echo ${client[0]} affiche Dupont affiche Dupont affiche Dupont Nota : on peut remplacer par [1] : affichera la 2 e valeur client[1] = Alexandre echo ${client[0]} echo ${client[1]} echo ${client[*]} nom=0 ; prenom=1 echo ${client[prenom]} echo ${#client[*]} Si on utilise [*] : affichera les valeurs de tous les index affiche Dupont affiche Alexandre affiche Dupont Alexandre affiche alexandre affiche le nombre d index utilisés % : modulo Olivier DEHECQ http://aide.informatique1.fr Page 14

Olivier DEHECQ http://aide.informatique1.fr Page 15