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

Contact : tssri-reseaux@hotmail.fr TEL : 00212669324964 TP2 scripts BASH (corrigés) 1. Script de création

TP2 scripts BASH (corrigés)

1. Script de création automatique d'un groupe d'utilisateurs

pour un groupe d'utilisateurs, avec génération de mots de passe standard LINUX + SAMBA

#!/bin/bash # SCRIPT creer1.sh

# ================

# création d'un ensemble de comptes construits

# avec un nom generique suivi d'un numero

# génération automatique de mot de passe Linux et Samba

# ===================================================== echo Donnez un nom de connexion générique read nom echo "Donnez le nom du groupe (par défaut $nom)" read groupe if [ -z $groupe ] then groupe=$nom fi

# le groupe existe t-il ? si oui, création impossible

echo "Création du groupe $groupe" echo "==========================" groupadd $groupe if [ $? -ne 0 ] then echo "Création du groupe impossible FIN" exit 1 else echo "Création du groupe $groupe " >>creer.txt

#

pour trouver le numero gid du groupe, pas necessaire

#

gr=`grep $groupe /etc/group | cut -d ":" -f3`

#

echo "numero du groupe primaire $groupe : $gr "

fi

#

saisie du mot de passe

# le mot de passe par défaut est fabriqué avec les 3 premières lettres

# suivies du numéro de l'utilisateur

motpasse=$(echo $nom | cut -c1-3) echo "Donnez un mot de passe générique (par défaut $motpasse)" read mdp if [ -z $mdp ] 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

mdp=$motpasse

fi

# saisie des numeros echo numero mini read mini echo numero maxi read maxi

# création des comptes Samba ?

echo "Création (aussi) des comptes Samba ? (o/n)" read rep if [ $rep = "o" -o $rep="O" ] then

smb="0"

fi

echo "Création des comptes $nom$mini a $nom$maxi" echo "===========================================" # declarer i variable de type entier (obligatoire) declare -i i i=$mini while [ $i -le $maxi ] do nomuser="$nom$i" motpasse="$mdp$i"

# création du compte Linux

useradd -G $groupe $nom$i echo $motpasse | (passwd --stdin $nomuser)

# création du compte Samba avec le meme mot de passe if [ $smb = 0 ] then smbpasswd -a $nomuser $motpasse fi

# affichage du compte-rendu

uid=$(grep $nomuser /etc/passwd | cut -d: -f3) echo "compte Linux $nomuser ---> créé avec le numéro $uid et le mot de passe $motpasse"

if [ $smb = 0 ] then echo " $motpasse" fi

compte SAMBA $nomuser ---> créé avec le mot de passe

# ajout dans le fichier de log creer.txt

echo "compte Linux $nomuser / uid = $uid / passwd = $motpasse, créé le $(date)" >> creer.txt if [ $smb = 0 ] then

echo " & SAMBA $nomuser / $motpasse, créé le $(date)" >> creer.txt fi

# au suivant !

i=$i+1

done

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

echo "----------------------------------------------" >>creer.txt

2. Script de suppression du groupe

3.

#!/bin/bash

4.

# SCRIPT supprimer1.sh

5.

# ====================

6.

# saisie du nom générique du groupe à supprimer

7.

echo "Donnez le nom du groupe de comptes a supprimer"

8.

read groupe

9.

if [ -z $groupe ]

10.

then

11.

echo "Donnez un nom de groupe valide !"

12.

exit 1

13.

fi

14.

15. # vérification : ce groupe existe t-il ?

16.

# rappel : \b pour éviter que $groupe soit seulement le début du nom d'un groupe

17.

if ! grep "^$groupe\b" /etc/group

18.

then

19.

echo "ce groupe n'existe pas

fin"

20.

exit 1

21.

fi

22.

23.

echo "Suppression des comptes de $groupe"

24.

echo "=================================="

25.

liste=$(grep "^$groupe" /etc/passwd | cut -d ":" -f1)

26.

echo "Liste des comptes à supprimer : "

27.

echo $liste

28.

# attention !

ne pas ecrire "$liste" ! pourquoi ??

29.

set -- $liste

30.

for nom in "$@"

31.

do

32.

if userdel -r $nom

33.

then

34.

echo "suppression de $nom"

35.

# pour enregistrer les comptes effectivement supprimes dans un fichier

36.

echo "$nom est supprimé le $(date)" >>suppr.txt

37.

fi

38.

done

39.

#

y a t-il encore un compte du groupe ?

40.

if [ ! -e "/home/$nom"* ]

41.

then

42.

echo "Le groupe est vide ; suppression du groupe (o/n) ?"

43.

read rep

44.

if [ $rep = "o" -o $rep = "O" ]

45.

then

46.

groupdel $groupe

47.

echo "Le groupe $groupe est supprimé le $(date)" >>suppr.txt

48.

fi

49.

fi

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

50. echo "-------------------------------------------" >>suppr.txt

51. Créer des comptes décrits dans un fichier : creer2.sh

52.

#!/bin/bash

 

53.

# SCRIPT creer2.sh

54.

# ================

55.

# Création automatique des comptes d'apres le fichier users.txt

56.

# appel : ./creer2.sh [users.txt]

57.

58.

# analyse de la ligne de commande

59.

# a t-on passe un parametre ?

60.

if

[

$#

=

1

]

61.

then

 

62.

fichier=$1

 

63.

else

 

64.

echo "Nom du fichier des comptes Linux a creer [par defaut users.txt]"

65.

read fichier

 

66.

if [ -z $fichier ]

67.

then

 

68.

fichier="users.txt"

69.

echo "Utilisation du fichier $fichier pour genener les comptes"

70.

fi

71.

fi

72.

# le fichier $fichier existe t-il ? si non, sortie du script par exit 1

73.

if [ ! -e $fichier ]

74.

then

 

75.

echo "Le fichier $fichier n'existe pas ! Verifiez !"

76.

exit 1

 

77.

fi

78.

79.

# Lecture une par une des lignes de $fichier

80.

cat $fichier | while true

81.

do

82.

read ligne

 

83.

# c'est la fin du fichier --> sortie brutale de la boucle

84.

if [ "$ligne" = "" ]

85.

then

 

86.

break

87.

fi

88.

# Traitement de la ligne (attention pas de " " autour de $ligne)

89.

# on "eclate" la ligne en affectant les variables de position

90.

set -- $ligne

 

91.

login=$1

92.

mdp=$2

 

93.

nom=$3

94.

groupe=$4

 

95.

echo $login $passwd $groupe $nom

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

96. # existe t-il un sous-rep au nom $login dans /home/ ?

97. if [ -d "/home/$login" ]

98. then

99. echo "Le compte $login existe deja ! "

100. # on cree le compte avec $groupe comme groupe primaire

101. else

102. useradd -G $groupe $login

103. echo $mdp | (passwd --stdin $login)

104. smbpasswd -a $login $mdp

105. uid=$(grep -w "^$login" /etc/passwd | cut -d: -f3)

106. echo "creation de $login / uid = $uid / passwd = $mdp"

107. echo "creation de $login / uid = $uid / passwd = $mdp, cree le

$(date)" >>creer.txt

108. fi

109. done

110. # fin boucle de creation

111. echo "----------------------------------------------" >>creer.txt