2015-03-16 9 views

Odpowiedz

5

Ten skrypt może pomóc:

read -p "enter group name: " group 
    if grep -q $group /etc/group 
    then 
     echo "group exists" 
    else 
     echo "group does not exist" 
    fi 
+0

To jest prawie to, co zacząłem z tym nie działało .. dołączę zrzuty ekranu kodu i co się dzieje, gdy działa * edytuj * nie mogę dołączyć zdjęcia * edycja * – annieapple2000

+10

Myślę, że 'jeśli grep -q"^$ {grupa}: "/ etc/group' jest znacznie bezpieczniejsze. – Phylogenesis

+2

Mój skrypt powłoki zatrzymał się po uruchomieniu tych instrukcji, Lepiej postępuj zgodnie z odpowiedzią @andiba. – saravanakumar

30

Oświadczenie w roztworze rupsgrep ma pewne wady:

np grepping dla grupy admin może zwrócić true ("grupa istnieje"), gdy istnieje grupa lpadmin.

Albo naprawić grep query

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

lub użyj

if [ $(getent group admin) ]; then 
    echo "group exists." 
else 
    echo "group does not exist." 
fi 
+5

Możesz powiązać getent, aby utworzyć grupę, jeśli nie istnieje w ten sposób: 'getent group admin || groupadd [opcje] admin' Możesz dalej łączyć to z '&& useradd -G admin someuser', aby utworzyć jednolinijkę, która powinna utworzyć grupę w razie potrzeby, a następnie dodać do niej użytkownika. –

4

grepping/etc/group działa, ale tylko na komputerze, na którym /etc/nsswitch.conf posiada:

group: files 

oznacza, że ​​tylko/etc/group jest konsultowany podczas określania dostępnych grup. Zastosowanie:

getent group <groupname> 

za rozwiązanie bardziej rodzajowe, sprawdzanie statusu wyjścia: 0 oznacza „istnieje”, niezerowa oznacza „nie istnieje”. Na przykład, aby sprawdzić, czy istnieje grupa „postgres” i utwórz go, jeśli nie (przy założeniu powłoki bash, pracuje jako użytkownik mógł tworzyć nowe grupy) uruchom:

/usr/bin/getent group postgres 2>&1 > /dev/null || /usr/sbin/groupadd postgres 
2

Znalazłem go bardziej użyteczne, aby komponować rozwiązanie andiba jest do prawidłowego funkcjonowania:

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

}

może to na przykład być wywołany w środowisku poprzez włączenie tej funkcji w /etc/bash.bashrc*, takie, które można następnie sprawdzić istnienie grupy, używając następującego czaru:

grpexists group_name 

które powinny następnie powrót jednego z:

grupy group_name istnieje.

lub

grupieGROUP_NAME nie istnieje.

Powiązane problemy