Master 1ère année Sécurité des Systèmes d’Information 1 Programmation en shell
Master 1ère année Sécurité des Systèmes d’Information 2 Shell Test sur une chaîne de caractères OK si les deux chaînes sont différentes != chaîne : OK si les deux chaînes sont identiques = non zero, retour OK si la variable n'est pas vide (texte quelconque) -n zéro, retour OK si la variable est vide (ex test -z "$a") -z
Master 1ère année Sécurité des Systèmes d’Information 3 Shell Test sur une chaîne de caractères Exemple: #!/bin/sh PROG=`basename $0.sh` if [ ”$PROG” = ”isomount” ]; then elif [ ”$PROG” = ”isoumount” ]; then else fi
Master 1ère année Sécurité des Systèmes d’Information 4 Shell Test sur les valeurs numériques Greater than : supérieur-gt Greater or equal : supérieur ou égal-ge Less ou equal : inférieur ou égal-le Less than : inférieur-lt Not Equal : Différent-ne Equal : Egal-eq
Master 1ère année Sécurité des Systèmes d’Information 5 Shell Test sur les valeurs numériques Exemple: #!/bin/sh kill -0 $PID if [ ”$?” –eq 0 ]; then else fi
Master 1ère année Sécurité des Systèmes d’Information 6 Shell Test sur les fichiers Autorisation en écriture-w Etc… Autorisation en exécution-x Autorisation en lecture-r Un répertoire-d Fichier normal-f
Master 1ère année Sécurité des Systèmes d’Information 7 Shell Test sur les fichiers Exemple: #!/bin/sh DIR=/root/SOURCES if [ ! -d ”$DIR” ]; then mkdir $DIR fi
Master 1ère année Sécurité des Systèmes d’Information 8 Shell Test combiné Pour regrouper les combinaisons les parenthèses doivent être verrouillées par des \ \(...\). (…) NOT, NON logique! OR, OU logique-o AND, ET logique-a
Master 1ère année Sécurité des Systèmes d’Information 9 Shell if... then... else La structure « if then else fi » est une structure de contrôle conditionnelle. if then else fi Structure de contrôle conditionnelle
Master 1ère année Sécurité des Systèmes d’Information 10 Shell Exemple: PROG=`basename $0.sh` if [ $PROG == "backup" ]; then echo "Procédure de sauvegarde" elif [ $PROG == "restore" ]; then echo "Procédure de restauration" fi Structure de contrôle conditionnelle
Master 1ère année Sécurité des Systèmes d’Information 11 Shell case... esac case Valeur in Modele1) Commandes ;; Modele2) Commandes ;; *) Commandes si la valeur ne correspond à aucun modèles ;; esac Structure de contrôle conditionnelle
Master 1ère année Sécurité des Systèmes d’Information 12 Shell Caractères spéciaux Négation de la plage de caractères[!...] OU logique| Une plage de caractères[…] Un seul caractère? Chaîne variable (même vide)*
Master 1ère année Sécurité des Systèmes d’Information 13 Shell case "$1" in -p|-package) shift PAQUETAGE=$1 shift ;; … *) echo $"Usage: $0 -p [-v |-r |-c |-t ]" echo Example: $0 -p avldisplay-database -v 0.8 -c \"Modification du fichier \/usr\/share\/avldisplay\/nodomain.ldif\" echo " "$0 -p avldisplay-database -r 2 -c \"Modification du script de post installation\" exit 1 esac
Master 1ère année Sécurité des Systèmes d’Information 14 Shell for... in … do …; …; done for in do Commande 1 ; Commande 2 ; … done Structure de contrôle, boucle
Master 1ère année Sécurité des Systèmes d’Information 15 Shell for fichier in *.ps do dest=`basename $fichier.ps` echo Conversion de $fichier en $dest.pdf ps2pdf $fichier done
Master 1ère année Sécurité des Systèmes d’Information 16 Shell while... do …; …; done while do Commande 1 ; Commande 2 ; … done Structure de contrôle, boucle
Master 1ère année Sécurité des Systèmes d’Information 17 Shell #!/bin/sh fonction() { echo Exécution de la fonction 1 exit 5 } trap fonction SIGUSR1 COMPTEUR=0 while true do sleep 1 COMPTEUR=$(( $COMPTEUR + 1 )) echo $COMPTEUR done
Master 1ère année Sécurité des Systèmes d’Information 18 Shell until... do …; …; done until do Commande 1 ; Commande 2 ; … done Structure de contrôle, boucle
Master 1ère année Sécurité des Systèmes d’Information 19 Shell until [ $# -gt 0 ] do case "$1" in -1|-oneserver) shift SRVNAME=$1 shift ;; -2|-twoserver) shift SRVNAME=$1 shift ;; esac done