Vous êtes sur la page 1sur 5
WWW.RESEAUMAROC.COM Cours/formation /Video en informatique: Linux,Cisco,2003 Server,securité,Réseaux. Contact :

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

WWW.RESEAUMAROC.COM Cours/formation /Video en informatique: Linux,Cisco,2003 Server,securité,Réseaux. Contact :

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

WWW.RESEAUMAROC.COM Cours/formation /Video en informatique: Linux,Cisco,2003 Server,securité,Réseaux. Contact :

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

WWW.RESEAUMAROC.COM Cours/formation /Video en informatique: Linux,Cisco,2003 Server,securité,Réseaux. Contact :

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 :

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