Comment vérifier si un groupe existe et ajouter s'il N'existe pas dans le script Shell Linux

ceci est un résumé de ce que je veux que mon code:

if (group exists)
then

  (add user to group)

else

  (create group)

  (add user to group)

fi

j'utilise Ubuntu en machine virtuelle, mais tous les résultats que j'ai trouvé sur des sites similaires ne fonctionnent pas.

21
demandé sur ekad 2015-03-16 12:19:51

4 réponses

Ce script peut vous aider:

   read -p "enter group name: " group
   if grep -q $group /etc/group
    then
         echo "group exists"
    else
         echo "group does not exist"
    fi
9
répondu Rups 2017-12-01 20:00:26

grep déclaration dans la solution de rups a quelques défauts:

E. G. grepping pour un groupe admin retour true ("groupe") quand il y a un groupe lpadmin.

soit fixer le greprequête

grep -q -E "^admin:" /etc/group

ou utiliser

if [ $(getent group admin) ]; then
  echo "group exists."
else
  echo "group does not exist."
fi
39
répondu andiba 2017-11-09 17:46:44

Grepping/etc /group fonctionne, mais seulement sur une machine où/etc / nsswitch.conf:

group: files

ce qui signifie que seul /etc/group est consulté lors de la détermination des groupes disponibles. Utilisation:

getent group <groupname>

pour une solution plus générique, vérifier le statut de sortie: 0 signifie "existe", non-zero signifie"n'existe pas". Par exemple, pour vérifier si le groupe 'postgres' existe, et le créer s'il n'existe pas (en supposant que bash shell, fonctionne comme un utilisateur capable de créer de nouveaux groupes) exécuter:

/usr/bin/getent group postgres 2>&1 > /dev/null || /usr/sbin/groupadd postgres
8
répondu Lemon Cat 2017-09-04 15:46:53

j'ai trouvé plus utile, de composer la solution d'andiba dans une fonction correcte:

function grpexists {
if [ $(getent group ) ]; then
  echo "group  exists."
else
  echo "group  does not exist."
fi

}

Cela peut pour l'e.g être invoquées dans votre environnement en incluant cette fonction dans votre /etc/bash.bashrc*, de sorte que vous pouvez ensuite vérifier l'existence d'un groupe, en utilisant les sorts:

grpexists group_name

Qui renvoie ensuite l'une des suivantes:

groupe group_name existe.

ou

groupe group_name n'existe pas.

4
répondu nemesisfixx 2017-11-11 01:54:18