Créer des utilisateurs à partir d'un fichier .CSV

En PowerShell, l'opération est 'simple', puisqu'une commande existe (Import-Csv)

En Bash, ce n'est pas plus compliqué ! Voici comment faire !


Structure du fichier CSV

Pour ce script ultra basique, nous allons créer tous les utilisateurs linux à partir d'un fichier CSV (nommé fichier.csv pour l'exemple) comme ci-dessous :

sheldon,AbzGhjeZl,/home/sheldon
artigue,gefok33gPl,/home/artigue
pirate,Eerinpin34,/home/pirate
antoine,Zbpinr254g,/home/drog22
radjish,BQINDzpinfbin3,/home/radd

A gauche, nous avons le prénom de l'utilisateur à créer, au milieu son mot de passe, à droite le chemin de son répertoire personnel..

Notez que j'ai volontairement changé le nom du répertoire personnel pour les 2 derniers (bah oui, on peut !)

Comme il s'agît d'un fichier .csv, j'ai laissé la virgule en tant que délimiteur par défaut, mais rien ne vous empêche de mettre le caractère de votre choix dans le fichier csv !

Vous veillerez simplement à changer le caractère indiqué dans la variable IFS du script qui suit

Vous remarquez qu'à la différence de PowerShell, la première ligne n'est pas réservée au nommage des colonnes (que vous pouvez directement récupérer ensuite grâce aux fonctions).

En Bash, on entre directement les données !


Le script BASH

Voici comment se composera donc ce script !

#!/bin/bash

clear

while IFS=',' read -r username passwd homepath
do
    useradd -d '$homepath' -m -p '$passwd' '$username'
done < <(cat /chemin/fichier.csv)

Explication du script

Nous faisons une simple boucle, en prenant soin d'indiquer dans la variable IFS le caractère délimiteur de chaque colonne.

Puis nous faisons une lecture récursive de toutes les données, ligne par ligne, en déclarant les variables (username passwd et homepath) qui contiendront la valeur de chaque donnée de chaque colonne.

Enfin, à chaque fin de ligne, les 3 variables étant remplies des informations nécessaires pour créer l'utilisateur, nous créons l'utilisateur avec la commande useradd !

(Attention, l'espace entre les 2 < à la fin est volontaire !!)

Pas bien compliqué hein ?


⬆️ Retour en haut de la page