Un administrateur système pensera toujours à automatiser la plupart de ses tâches afin que les tâches de routine soient effectuées facilement et qu'il puisse se concentrer sur d'autres tâches critiques. L'une de ces tâches est la création de compte Unix. Ici, nous verrons comment créer un compte Unix à l'aide d'un script shell. Dans ce voyage de création de script shell, même si la tâche semble simple, vous apprendrez beaucoup de choses !
1. Suivez les directives standard lors de la création de scripts pour une meilleure lisibilité
La plupart des autres langages de programmation comme C, C++, JAVA ont un ensemble de « meilleures pratiques » qui seraient suivies lors du codage. Cependant, comme son nom l'indique, le script shell est une sorte de programme écrit pour un environnement d'exécution spécial à un temps rapide. Un temps rapide signifie très moins suivre les règles. Le respect des bonnes pratiques rendra votre script plus lisible, réutilisable et maintenable.
Donc, dans ce script, nous utiliserons des fonctions pour modulariser le code. Ci-dessous extrait de code pour la fonction utilisation() :
usage(){echo "Usage :$PROGNAME [options]Options :-u username, Provide name for new user account creation-p password, Provide complex password-h help, display this help message and exit "exit 1; }Cette fonction d'utilisation est appelée chaque fois qu'une aide est requise pour l'exécution du script ou pour de mauvais arguments, etc.,
2. Comment accepter des arguments dans un script shell
Dans un script shell, l'acceptation des arguments se fait comme ci-dessous :
$0 - Nom du script$1 - Premier argument$2 - Deuxième argument$# - Nombre d'arguments$@ - Tous les argumentsEx :
Mar 29 oct.>$./account_creation.sh username passwordDans l'exemple ci-dessus, $0 est account_creation.sh, $1 est le nom d'utilisateur et $2 est le mot de passe. $# renverra 2 et $@ renverra tous les arguments.
3. Options de ligne de commande utilisant "Getopt" dans le script shell
Fournir des options de ligne de commande est une meilleure façon de présenter votre script à l'utilisateur. Vous pouvez écrire des scripts pour prendre en charge les options de ligne de commande courte et longue. Par exemple :pour afficher un message d'aide, vous pouvez utiliser l'option "-h" ou "-help". Une convention typique est que les options longues sont précédées d'un double hachage et les petites d'un tiret simple. Ci-dessous le code :
while getopts ":h:u:p:" OPTIONdo case "$OPTION" in h) usage ;; u) USERNAME=${OPTARG} ;; p) MOT DE PASSE=${OPTARG} ;; \?) usage;; esacdoneLa commande getopts est une commande intégrée du shell Korn/POSIX qui récupère les options et les arguments d'option à partir d'une liste de paramètres. En savoir plus sur getops ici. En simple pour chaque option de ligne de commande, la boucle est exécutée et la valeur correspondante pour chaque option est stockée dans des variables assignées. Ci-dessous l'extrait de code pour vérifier si les paramètres passés sont vides :
shift $((OPTIND-1))if [ -z "${USERNAME}" ] || [ -z "${MOT DE PASSE}" ] ; puis utilisationfi4. Comment exécuter des commandes Linux à partir d'un script shell
Ici useradd est une commande Linux utilisée pour créer un compte.
/usr/sbin/useradd -m ${USERNAME}Ici, vous devez noter que si l'utilisateur existe déjà, vous pourriez recevoir quelques avertissements comme stderr qui est montré dans l'image ci-dessous :
5. Comment ignorer/rediriger stdout et stderr vers le fichier journal
Bash et d'autres shell modernes fournissent une fonction de redirection d'E/S. Les numéros de flux d'E/S standard de Linux sont les suivants :
Descripteur | Nom | Description |
0 | stdin | Saisie standard |
1 | stdout | Sortie standard |
2 | stderr | Erreur type |
un. Redirection du flux stderr vers un fichier :
$script 2> erreur.log
b. Redirection du flux stdout vers un fichier :
$script 1> sortie.log
c. Redirigez à la fois stderr et stdout vers un fichier :
$script &>fichier.out
Si vous souhaitez simplement ignorer ces messages stderr et stdout, redirigez-le vers /dev/null au lieu de file.
$script 2>/dev/null
6. Comment vérifier l'exécution réussie de la commande dans un script shell
$ ? est le code de retour (code d'état) de la dernière commande ou du dernier script exécuté. 0 ==succès, tout autre nombre signifie un échec
7. Instructions conditionnelles comme if/else dans un script shell
La plupart des langages de programmation et de script ont une sorte d'expression if/else, tout comme le script shell. Le tableau suivant présente les différentes expressions autorisées.
-eq | égal à |
-ne | différent de |
-lt | moins de |
-le | inférieur ou égal à |
-gt | supérieur à |
-ge | supérieur ou égal à |
Remarque :Contrairement à la plupart des autres langues, les espaces sont très importants lorsque vous utilisez un si déclaration dans les scripts shell.
Le code ci-dessous vérifie le code d'état de la dernière commande et en cas de succès, il va plus loin pour créer un mot de passe. Une fois le mot de passe défini avec succès, nous mettrons un message sur le terminal pour la réussite de l'activité.
# Créer un compte utilisateur/usr/sbin/useradd -m ${USERNAME} 2>/dev/nullif [ $? -eq "0" ] ; puis echo -e ${MOT DE PASSE} | /usr/bin/passwd ${USERNAME} --stdin>/dev/null if [ $? -eq "0" ] ; puis echo "L'utilisateur ${USERNAME} a été créé avec succès" fifi
Script complet :lien de téléchargement
Découvrez nos autres articles intéressants sur LINUX :