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.
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
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 grep
requête
grep -q -E "^admin:" /etc/group
ou utiliser
if [ $(getent group admin) ]; then
echo "group exists."
else
echo "group does not exist."
fi
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
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.