7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)
  • Q:
    Bijdrager
    lord anubis

    bash: group vergelijken en users terug in een array

    Ik gebruik dscacheutil -q group om een lijst met groepen te krijgen.
    geeft als voorbeeld

    name: _postdrop
    password: *
    gid: 28

    name: _postfix
    password: *
    gid: 27

    name: _postgres
    password: *
    gid: 216
    users: _devicemgr _calendar _teamsserver _www

    Ik heb moeite met grep met het vinden van de groep en dan het terug krijgen van de gebruikers/Users

    als ik in $entry de groep naam heb, en als ik zoek naar “_postgres” dan wil ik in een array met
    ” _devicemgr” “_calendar” “_teamsserver” “_www”
    terug hebben.

    Iemand wat suggesties?

    Bijdrager
    Ir.Bob
    <br />
    dscacheutil -q group<br />
     

    veranderen naar

    <br />
    dscacheutil -q group -a name $entry | grep -E "^("users: ").*$"<br />
     

    Even de regular expression controleren op juistheid, want ik ben daar niet zo’n held in.

    Bijdrager
    lord anubis

    Dank je.

    Helaas, de grep werkt niet. Met mijn grepjes kreeg ik ook niet het antwoord terug, soms helemaal niets. Jij krijgt ten minste nog iets. :sarcastic:

    ik krijg als resultaat van

    dscacheutil -q group -a name _postgres | grep -E “[^users: ].*$”

    <br />
    name: _postgres<br />
    password: *<br />
    gid: 216<br />
    users: _devicemgr _calendar _teamsserver<br />
     

    en er is geen verschil tussen dat en

    <br />
    dscacheutil -q group -a name _postgres<br />
     

    [edit:] Mettertijd dat ik mijn resultaten post zie ik een wijziging in je code.

    Helaas deze werkt ook niet, geeft zelfs een error.

    <br />
    entry="_postgres"<br />
    dscacheutil -q group -a name $entry | grep -E "^("users: ").*$"<br />
    grep: Unmatched ( or \(<br />
     

    en

    <br />
    dscacheutil -q group -a name _postgres | grep -E "users: "<br />
     

    geeft wel de regel met users:, nu nog ‘users: ‘ weg en in een array.

    Bijdrager
    Ir.Bob

    Die grep heb ik zo even uit het hoofd opgetikt en zeker niet gecontroleerd. Wat ik wel weet is dat je grep icm een regexp nodig hebt om alle shit eruit te zuiveren. Speel dus even met de regexp tot je het juiste resultaat hebt.

    misschien is het weghalen van de aanhalingstekens voldoende:

    <br />
    dscacheutil -q group -a name $entry | grep -E ^("users: ").*$<br />
     
    Bijdrager
    Ir.Bob

    Goed even goed googlen, maar dit is de oplossing:

    <br />
    dscacheutil -q group -a name $entry | grep "users: " | sed s/"users: "//g<br />
     
    Bijdrager
    McShamus

    # cat /etc/group|grep jouwgroup|cut -d”:” -f4

    Bijdrager
    lord anubis

    Heren,

    jullie zijn geweldig.

    Had natuurlijk ook ggoegled, maar hoe dom:oops: kan ik zijn. ik had tijdens verschillende testen van mijn eigen code entry=postgres (let op de underscore _, welke underscore??) gedaan in de terminal en dan schiet het niet op.

    in ieder geval bedankt.

7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.