Les scripts sont un moyen d’automatiser des actions à répéter pour de nombreuses données, en évitant toute interaction.
Pour fonctionner, ils doivent :
#! /bin/bash echo off while [IFS=<séparateur>] read champ1 champ2 do echo "Ceci est le champ n°1: " $champ1 echo "Et voici le champ 2 : " $champ2 done< [</chemin>]<fichierAlire>
Un script est un fichier avec l'extension .sh qui doit être exécutable. Pour cela, on doit lui ajouter la permission :
chmod +x <nomducript.sh>
On pourra alors l'exécuter :
./<nomduscript.sh>
Les variables dans les scripts se déclarent par leur nom, et s'utilisent avec le préfixe $.
Exemple :
#il n'y a pas d'espace entre la variable et le caractère "=" mavariable="bonjour" echo $mavariable
La concaténation de chaine dans une variable s'écrit par la simple juxtaposition des portions de texte :
Exemple :
laDate=$(date +%Y%m%d) nomFichier="fichier"$laDate".csv"
On peut gérer l'affichage des dates avec la commande date : La syntaxe est diffrente selon les distributions (tester avec ou sans les “”):
date +"<format>" #ou date +<format>
Le format utilise les paramètres suivants :
Exemples :
date +"%d/%m/%y"
Affichera 13/02/18.
date +"%Y-%m-%d"
Affichera 2018-02-13
Pour créer des groupes en masse :
Voici la source de données dans le fichier donneesgroupes.csv:
groupe1 groupe2 groupe3
Le script doit parcourir ce fichier et pour chaque ligne utiliser la commande addgroup.
#! /bin/bash #! /bin/sh # Boucle qui lit le fichier "donneesgroupes.csv" et cree les groupes correspondant while IFS=, read legroupe do groupadd $legroupe echo $legroupe "est ajoute" done < donneesgroupes.csv
Sur la boucle WHILE
Certaines commandes Linux nécessitent une interaction. Par exemple, la création d'utilisateur demande de multiples informations :
root# adduser unutil Adding user `unutil' ... Adding new group `unutil' (1008) ... Adding new user `unutil' (1008) with group `unutil' ... Creating home directory `/home/unutil' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for unutil Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y
On doit indiquer le mot de passe (2 fois), les 5 informations de l'utilisateur et valider par Y.
Un script demandera donc d'interagir pour fournir ces éléments.
Une astuce est :
#! /bin/bash #! /bin/sh echo on # Boucle qui lit le fichier "donneesutils.csv" et cree les utilisateurs correspondant dans les bons groupes while IFS=, read lecompte lepass legroupe do #cree un fichier de reponse #mot de passe. La premiere ligne cree le fichier responses.txt (>), les autres ajoutent a son contenu (>>) echo $lepass > reponses.txt echo $lepass >> reponses..txt #infos du compte : ici données vides echo >> reponses.txt echo >> reponses.txt echo >> reponses.txt echo >> reponses.txt echo >> reponses.txt #validation echo "Y" >> reponses.txt #execution de la commande d'ajout avec les donnees presentes dans le fichier reponses.txt adduser $lecompte --ingroup $legroupe <reponses.txt echo $lecompte "est ajoute" #suppression des reponses rm reponses.txt done < donneesutils.csv
Ici on a intégré le compte directement dans un groupe (–ingroup) pour éviter la création d'un groupe au nom de l'utilsiateur