Dans le cadre de la préparation LPIC-1 il y a un gros chapitre sur les commandes en ligne qui se termine par une introduction aux scripts shell.
Ce chapitre est, je crois, le plus long mais il est néanmoins très intéressant.
Quand je travaillais chez EDS, j'ai été administrateur Solaris pendant quelques mois, juste avant de venir ici. A cette occasion j'ai pu me former un peu aux scripts shells. Je suis très loin d'être un crack de la discipline mais je trouve cela assez amusant à réaliser.
C'est assez intéressant de voir la puissance que l'on a par rapport aux batches MS-DOS.
Qui serait intéressé par la création d'une section scripts dans le forum ?
Pensez-vous que ce serait une bonne idée ?
J'en lance un que j'ai fait ce week-end pour donner l'exemple :
Il est encore un peu brouillon et manque peut-être de commentaire, mais c'est un premier jet et il fonctionne.
#!/bin/sh
# script visant a automatiser la creation de compte.
#=========================================================================
# Auteur | Jonas FERNANDEZ pour entrainement | 7 fevrier 2009
#=========================================================================
# N° de version | commentaire | date
#=========================================================================
# Version 0 | creation et premier tests. | 7 fevrier 2009
# Version Beta | creation compte UNIX uniquement | 8 fevrier 2009
# Version Beta2 | creation comptes Unix et samba |
#
#
#=========================================================================
echo "$0 permet de creer des comptes utilisateurs Unix (et samba prochainement ) en une seule commande."
##########################################
# recuperation du code utilisateur saisi dans une variable
echo "Veuillez saisir le code utilisateur en minuscules. (chiffres autorisés.) \c"
utilisateur=$utilisateur
read utilisateur
utilisateur=`echo "$utilisateur" | tr "[A-Z]" "[a-z]"`
echo "le compte utilisateur est $utilisateur , je vais verifier s'il n'existe pas deja."
vartmp=`cat /etc/passwd | cut -d: -f1 | grep "^$utilisateur$"`
if test -z "$vartmp"
then
echo "le compte n'existe pas"
elif test $vartmp=$utilisateur
then
echo "le compte existe deja"
sleep 2
exit 0
fi
# ############################################
# calcul de l'UID du nouveau compte en ajoutant un au dernier UID du
fichier /etc/passwd
echo "Recuperation UID nouveau compte"
lastUID=`cat /etc/passwd | grep "^[a-z]" | cut -d: -f3 | tail -1`
newUID=`expr $lastUID + 1`
echo "calcul UID donne $newUID"
######################################
#Controle de l'inexistance de l'UID
echo "verification de son inexistance dans la base des comptes"
varUID=`cat /etc/passwd | cut -d: -f3 | grep "^$newUID$"`
if test -z "$varUID"
then
echo " Numero $newUID disponible "
elif test $varUID -eq 0
then
echo " $newUID est deja utilise - controlez votre base "
exit 1
fi
echo "UID de $utilisateur sera $newUID"
#########################################
#Recuperation du nom de groupe et attribution du groupe users par defaut.
echo " Veuillez saisir le nom de groupe principal pour $reponse."
echo " Si vous ne saisissez rien, le groupe par defaut sera users"
echo " tapez sur enter pour ne rien saisir \c"
groupe=$groupe
read groupe
echo "$groupe"
searchgrp=`cat /etc/group | cut -d: -f1 | grep "^$groupe$"`
if test -z "$searchgrp"
then
echo "Le groupe saisi n'existe pas ou vous n'avez rien saisi."
echo "le groupe par defaut sera donc users"
groupe=${groupe:-users}
fi
case $groupe in
users)
echo "Le groupe par defaut sera users"
;;
*)
echo "le groupe par defaut sera $groupe"
;;
esac
###########################################
# recuperation du contenu du champs de commentaire (NOM, Prénom, age, sexe, qualités...)
echo "voulez-vous remplir le champs GECOS (commentaire Nom, prénom) ? (O/N) \c"
reponse=$reponse
echo "$reponse"
read reponse
case $reponse in
[oO])
echo "veuillez saisir le champs gecos \c"
gecos=$gecos
read gecos
echo "vous avez choisi $gecos -En cas d'erreur vous pourrez toujours le modifier plus tard."
;;
[nN])
echo "Vous ne souhaitez pas saisir le champs gecos."
echo "cette information etant facultative je n'insiste pas."
;;
esac
##########################################
# Les informations ont ete recuperees, on peut maintenant creer le compte.
echo "creation du compte $utilisateur avec UID $newUID dont le groupe par defaut est $groupe et le champs gecos contiendra $comment"
useradd -u $newUID -g$groupe -c "$comment" -d /home/$utilisateur -m -s /bin/bash $utilisateur
sleep 3
echo Voici la ligne cree dans la base des comptes UNIX
echo `cat /etc/passwd | grep "^$utilisateur:"`
#######################################
#
# A essayer : mettre un mot de passe à l'utilisateur en utilisant le script.
#######################################
# echo "Creation du compte samba"
# A faire : vérifier si le fichier smbusers existe et si le service est lancé.
# echo "si samba existe"
# A poursuivre...


