Anda di halaman 1dari 5

WWW.RESEAUMAROC.

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

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 : 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 " compte SAMBA $nomuser ---> créé avec le mot de passe
$motpasse"
fi
# 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 : 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 : 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 : 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

Anda mungkin juga menyukai