GNU/Linux >> Tutoriels Linux >  >> Linux

[Linux] :7 choses que vous apprendrez en commençant à écrire un simple script Shell

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 arguments

Ex :

Mar 29 oct.>$./account_creation.sh username password

Dans 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;; esacdone

La 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 utilisationfi

4. 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 :

Raccourcis clavier rapides du shell bash – Astuces Linux

8 commandes Linux amusantes :vous allez adorer !

Meilleures pratiques lors de l'exécution de la commande rm -rf sous linux

Commandes de l'administrateur système Linux

Comment ajouter une barre de progression pour copier et déplacer des commandes sous Linux ?

Comment synchroniser l'heure du serveur Linux avec le serveur de temps réseau

Comment configurer yum pour utiliser le référentiel CentOS sur la machine RHEL

Meilleurs outils pour récupérer des données [Windows, Linux, DOS, MAC OS X]


Linux
  1. Comment obtenir le nom de distribution et le numéro de version dans un simple script shell ?

  2. Déterminer Shell dans le script pendant l'exécution ?

  3. Comment exécutez-vous un script lors de la connexion dans * nix ?

  4. Script de translittération pour le shell Linux

  5. Un moyen simple de redémarrer les processus en panne ?

Comment exécuter une commande dans un script shell ?

Répertoire courant du script shell ?

Un fichier .sh peut-il être un malware ?

Comment puis-je obtenir le nom de la distribution et le numéro de version dans un simple script shell ?

Script de démarrage systemd postgresql

Ansible empêchera-t-il l'exécution de 'rm -rf /' dans un script shell