Sie sind auf Seite 1von 5

WWW.RESEAUMAROC.

COM
Cours/formation /Video en informatique: Linux,Cisco,2003 Server,securité,Réseaux.
Contact : tssri-reseaux@hotmail.fr TEL : 00212669324964

TP1 scripts BASH : proposition de corrigés

I. Scripts a: et c:
II. #!/bin/bash
III. # script a:
IV. echo --- taper c: pour démonter la disquette ----------------
V. mount /dev/fd0 /mnt/floppy
VI. cd /mnt/floppy
VII. ls

VIII. Un utilisateur est-il connecté ?


IX. #!/bin/bash
X. # vérifier qu'un user est connecte
XI. # appel : ./connexion.sh nom
XII. if [ $# = 0 ]
XIII. then
XIV. echo "appel : $0 nom"
XV. exit 1
XVI. fi
XVII. qui=$(who|cut -d" " -f1 | grep -w "^$1")
XVIII. if [ $? = 0 ]
XIX. then
XX. ou=$(echo $qui|cut -d" " -f2)
XXI. echo "L'utilisateur $qui est bien connecté(e) sur $ou"
XXII. else
XXIII. echo "L'utilisateur $1 n'est pas connecté(e) actuellement"
XXIV. fi
XXV. Lire un fichier
XXVI. #!/bin/bash
XXVII. # appel users.sh
XXVIII. # Lecture et affichage une par une des lignes de $fichier avec :
XXIX. # cat < $fichier | read ligne
XXX.
XXXI. cat < users.txt | while true
XXXII. do
XXXIII. read ligne
XXXIV. if [ "$ligne" = "" ]; then break; fi
XXXV. echo "lecture de la ligne --->" $ligne
XXXVI. set -- $ligne
WWW.RESEAUMAROC.COM
Cours/formation /Video en informatique: Linux,Cisco,2003 Server,securité,Réseaux.
Contact : tssri-reseaux@hotmail.fr TEL : 00212669324964

XXXVII. login=$1
XXXVIII. passwd=$2
XXXIX. nom=$3
XL. groupe=$4
XLI. echo login=$login, mdp=$passwd, groupe=$groupe, nom=$nom
XLII. done
echo $?

XLIII. Trouver la liste des comptes créés


XLIV. #!/bin/bash
XLV. # extraire la liste des comptes d'uid supérieur à 500
XLVI. # appel : ./comptes.sh
XLVII.
XLVIII. echo Liste des comptes créés
XLIX. echo =======================
L. echo nom uid gid
LI.
LII. # on peut aussi sauvegarder l'extraction dans un fichier temporaire passwd.txt
LIII. cat /etc/passwd | cut -d: -f1,3,4 | tr ":" " " | while true
LIV. do
LV. read ligne
LVI. if [ "$ligne" = "" ]; then break; fi
LVII. set -- $ligne
LVIII. if [ "$2" -ge 500 ]
LIX. then
LX. echo $1 $2 $3
LXI. fi
done

LXII. Tester un fichier


LXIII. #!/bin/bash
LXIV. # syntaxe test-fichier nomFichier
LXV. # effectue des tests sur le fichier et affiche un compte-rendu.
LXVI. acces=""
LXVII. if [ "$#" = 0 ]
LXVIII. then
LXIX. echo "Syntaxe d'appel : $0 nomFichier"
LXX. exit 1
LXXI. fi
LXXII. if [ ! -e "$1" ]
LXXIII. then
LXXIV. echo "Le fichier \"$1\" n'existe pas !"
WWW.RESEAUMAROC.COM
Cours/formation /Video en informatique: Linux,Cisco,2003 Server,securité,Réseaux.
Contact : tssri-reseaux@hotmail.fr TEL : 00212669324964

LXXV. exit 1
LXXVI. fi
LXXVII. if [ -d "$1" ]
LXXVIII. then
LXXIX. echo "Le fichier \"$1\" est un répertoire"
LXXX. fi
LXXXI. if [ -f "$1" ]
LXXXII. then
LXXXIII. echo -n "Le fichier \"$1\" est un fichier ordinaire"
LXXXIV. if [ -s "$1" ]
LXXXV. then
LXXXVI. echo " qui n'est pas vide"
LXXXVII. else
LXXXVIII. echo " qui est vide"
LXXXIX. fi
XC. fi
XCI. if [ -r "$1" ]
XCII. then
XCIII. acces="$acces lecture"
XCIV. fi
XCV. if [ -w "$1" ]
XCVI. then
XCVII. acces="$acces écriture"
XCVIII. fi
XCIX. if [ -x "$1" ]
C. then
CI. acces="$acces exécution"
CII. fi
CIII. echo "\"$1\" est accessible par $USER en $acces"
CIV. exit 0
CV. Lister un répertoire
CVI. #!/bin/bash
CVII. # syntaxe liste-fichier nom-fichier
CVIII. # --> liste les fichiers comme la commande ls
CIX. if [ "$#" != 1 ]
CX. then
CXI. echo "Syntaxe d'appel : $0 nomRepertoire"
CXII. exit 1
CXIII. fi
CXIV. if [ ! -d $1 ]
CXV. then
CXVI. echo "\"$1\" n'est pas un nom de répertoire valide"
WWW.RESEAUMAROC.COM
Cours/formation /Video en informatique: Linux,Cisco,2003 Server,securité,Réseaux.
Contact : tssri-reseaux@hotmail.fr TEL : 00212669324964

CXVII. exit 1
CXVIII. fi
CXIX. for fich in $1/*
CXX. do
CXXI. if [ -d $fich ]
CXXII. then
CXXIII. echo "d ---> $fich"
CXXIV. elif [ -f $fich ]
CXXV. then
CXXVI. echo - $fich
CXXVII. else
CXXVIII. echo "$fich : autre type de fichier"
CXXIX. fi
CXXX. done
CXXXI. Envoyer un mail à un ensemble d'utilisateurs
a. script message1.sh
b. #!/bin/bash
c. # on pourrait utiliser une conditionnelle
d. # if [ $# = 0 ]; then
e. # echo "Syntaxe $0 liste d'utilisateurs"
f. # exit 1
g. # fi
h. # Attention: les ( ) sont obligatoires car && est plus prioritaire que ;
i.
j. [ $# = 0 ] && (echo "Syntaxe $0 liste d'utilisateurs";exit 1)
k. echo "Envoi du message à $@"
l. for nom in $@
m. do
n. mail $nom@p00 <<EOF
o. bonjour a tous
p. ceci est un essai du script message1
q. utilisant mail sur p00
r. A+
s. Le "root"
t. EOF
u. done
v. script message2.sh
w. #!/bin/bash
x. # appel ./message2.sh
y. echo "message envoyé le $(date) a " >> utilisateurs.send
z. for nom in $(who | cut -d" " -f1)
aa. do
WWW.RESEAUMAROC.COM
Cours/formation /Video en informatique: Linux,Cisco,2003 Server,securité,Réseaux.
Contact : tssri-reseaux@hotmail.fr TEL : 00212669324964

bb. mail $nom@p00 << EOF


cc. bonjour a tous
dd. Attention ! le root vous parle
ee. déconnexion aujourd'hui a 18h
ff. travaux de maintenance réseau ...
gg. A+
hh. Le "root"
ii. EOF
jj. echo "$nom " >> utilisateurs.send
kk. done

Das könnte Ihnen auch gefallen