Usernamen in die richtige Zeile anhängen (/etc/group)

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Janine, 08.08.2007.

  1. Janine

    Janine Eroberer

    Dabei seit:
    27.07.2007
    Beiträge:
    60
    Zustimmungen:
    0
    Hallo Jungs,

    frage und zwar ne zeile in eine datei unten azuhängen ist np

    echo "Text" >> Dateiname dann hängt er ja den text unten an

    wie mach ich es aber das ich eine bestimmte zeile ausfindig machen will, weil ich muss einen Usernamen in die /etc/group kriegen und dafür muss ich ja erstmal die richtige zeile ausfindig machen und dann den usernamen dahinter anhängen but how? ^^

    Mfg Janine
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. dizzgo

    dizzgo Lernbereite Riesenratte

    Dabei seit:
    04.08.2005
    Beiträge:
    573
    Zustimmungen:
    0
    Ort:
    /ch/sg///
    Ich würd sagen das Stichwort heisst 'sed'
    man sed
    Gruss
    d22
     
  4. Janine

    Janine Eroberer

    Dabei seit:
    27.07.2007
    Beiträge:
    60
    Zustimmungen:
    0
    jo bin gerade mal was am lesen über sed und awk ist aber echt was wirwar ^^
     
  5. NoXqs

    NoXqs Routinier

    Dabei seit:
    07.05.2007
    Beiträge:
    420
    Zustimmungen:
    0
    Ort:
    Bremen
    Hier habe ich dir doch schon eine Möglichkeit gezeigt.
    Muss halt nur noch ein wenig verfeinert werden. ;-)
     
  6. #5 spoensche, 08.08.2007
    spoensche

    spoensche Mitglied

    Dabei seit:
    20.05.2006
    Beiträge:
    44
    Zustimmungen:
    0
    warum fügst du den benutzer nich einfach der entsprechenden gruppe zu?der steht doch dann da, oder habe ich jetzt was falsch verstanden?
     
  7. #6 Janine, 13.08.2007
    Zuletzt bearbeitet: 13.08.2007
    Janine

    Janine Eroberer

    Dabei seit:
    27.07.2007
    Beiträge:
    60
    Zustimmungen:
    0
    hmm ja will das es mein script macht und nicht einfach mit useradd ;)
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    zu NoXqs

    STRING=$(grep ${grp_name}:: /etc/group)

    sed -e s/${STRING}/"${STRING},${user_name}"/ /etc/group > /etc/group.sed ; mv /etc/group.sed /etc/group


    damit geht es nicht wirklich und so ganz versteh ich auch nicht was damachen willst bis auf das Ende ^^ naja ich werd mal weiter min Tutorila lesen.

    Aber wenn jemand weiss wie ich es schreibe wäre ich für eine Lösung sehr dankbar.

    MfG Janine
     
  8. #7 spoensche, 13.08.2007
    spoensche

    spoensche Mitglied

    Dabei seit:
    20.05.2006
    Beiträge:
    44
    Zustimmungen:
    0
    wie wärs wenn du useradd im script benutzt? du übergibst den namen usw. an dein script und fertig.
     
  9. #8 smg, 13.08.2007
    Zuletzt bearbeitet: 13.08.2007
    smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    So, mit gruppe findest du die Gruppe die du willst (die Zeile) musst du halt angeben welche Gruppe du suchst / welche Zeile.
    benutzer_ans_ende ist der benutzer der mit nem Komma hinten an die Zeile angehängt wird. Falls du Variablen im sed Ausdruck verwenden willst musst du die ' ' durch " " ersetzen.
    Hast du ein GNU sed kannst du das hier machen, natürlich mit root Privilegien.
    Fallst du kein GNU sed hast:
    Viel Spass.

    P.S.: getestet und funktionierend.
     
  10. #9 floyd62, 13.08.2007
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Na ja, eine Möglichkeit wäre z.B
    Code:
    sed -e "s/^${group_name}:.*/&,${user_name}/" <group >group.$$
    cmp -s group group.$$ || { cp -p group group.OLD; cp group.$$ group; }
    rm -f group.$$
    
    Allerdings kann ich spoensche nur zustimmen; "useradd" (oder "usermod", wenn der Login schon existiert) würde ich immer lieber verwenden, als direkt in Systemdateien rumzueditieren.

    Grüße, floyd62
     
  11. smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Floyd, ich muss leider mecker, dein sed Ausdruck ist _scheisse_. :) Du substituierst die ganze Zeile, das ist garnicht nötig, du matchst einfach auf die Zeilen die mit ^$group beginnen und substituierst dann das Zeilenende $ mit nem Komma + User, wie ichs oben gepostet hab, effizienter und schöner.

    P.S.: Dein & im Sed Ausdruck ist GNU Feature, d.h. wenn sie kein GNU sed hat kann man den Ausdruck in die Tonne kloppen.
     
  12. Janine

    Janine Eroberer

    Dabei seit:
    27.07.2007
    Beiträge:
    60
    Zustimmungen:
    0
    danke erstmal an smg werd ich gleich mal testen.

    Und dann nochmal für alle ich weiss das es useradd gibt aber ich will ja nicht einfach mit dem befehl arbeiten oder just im script nen parameter an useradd übergeben sondern pratisch den ganzen befehl nachscripten und per hand sozusagen in den dateien fummeln ;) fummel halt gerne :D
     
  13. #12 floyd62, 13.08.2007
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Hi smg,

    hui, harte Worte ... will hier jetzt keinen Flamewar starten :D, bin mir aber nicht ganz sicher, ob ich Dir da bei allem so 100%ig zustimmen kann:

    Zum einen, OK, der Match auf die gesamte Zeile und das '&' im Replacement führen wahrscheinlich zu einigen sed-internen Kopieraktionen; effizienter wäre wohl etwas wie
    Code:
    sed -e "/^${group_name}:/s/$/,${user_name}/" <group >group.$$
    
    (als praktisch Deine Lsg.)

    Wo ich Dir definitiv widersprechen muss, ist allerdings, daß das '&' im Replacement GNU-spezifisch sei: das ist ein Feature in sed, solange ich ihn kenne, auch z.B in der "System V Interface Definition" so beschrieben, und sollte daher wirklich auf allem funktionieren, was sich "UNIX" oder so ähnlich nennen darf.

    Die '-i'-Option allerdings, die Du in Deinem sed-Kommando anführst, wird nicht nur von sed auf einigen Nicht-Linux-Systemen nicht unterstützt, sondern ist nicht mal in allen GNU-sed-Releases verfügbar, die ich hier (immer noch :() am Laufen habe:
    Code:
    $ sed --version
    GNU sed version 3.02.80
                                 # Steinzeit-Version, klar ...
    $ sed -i
    sed: invalid option -- i
    ...
    
    Daher führt also wohl - wenn's denn portabel sein soll -- kein Weg an dem Gehampel mit den temporären Dateien vorbei.

    Und, um nochmal auf die ursprüngliche Aufgabe zurück zu kommen (also einen Benutzer in eine Gruppe aufzunehmen) -- Hi Janine, sorry, ich will hier auf keinen Fall Deinen Thread hijacken --:

    Wenn man das mit "usermod" erledigt (und die bisherigen Gruppen vorher mit "groups" oder zur Not "awk" einsammelt etc.), hat man nicht hinterher das Problem, überflüssige Kommata (wieder mit sed?) entfernen zu müssen, die mit einer so einfach gestrickten sed-Notlösung entstehen, wenn man einen User zu einer bisher leeren Gruppe hinzufügt.

    Grüße. floyd62
     
  14. smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    floyd62: he, das war nicht böse gemeint :)
    Also auf *bsd Systemen geht's mit -i"" und bei allen GNU seds geht's mit -i, mit nicht sed Varianten halt nicht, aber dafür haben wir ja auch ne lösung.
    & ist tatsächlich nicht GNU spezifisch - sorry.
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. Janine

    Janine Eroberer

    Dabei seit:
    27.07.2007
    Beiträge:
    60
    Zustimmungen:
    0
    Naja habs aufjedenfall jetzt so wie ich es haben wollte danke für die Hilfe Jungs :)
     
  17. niLs

    niLs òle òle

    Dabei seit:
    10.06.2004
    Beiträge:
    153
    Zustimmungen:
    0
    Ort:
    Hannover
    Hallo Janine,

    ich finde es immernoch ziemlich umständlich, wie du das machen möchtest.
    Du möchtest im prinzip einen Benutzer einrichten und den gleich einer Gruppe zuordnen, wenn ich das richtig verstanden habe, korrekt?

    #!/bin/bash
    read -p "Username: " username
    read -p "Gruppe: " gruppe
    read -p "Passwort: " passwort
    useradd -m $username -s /bin/bash -g $gruppe
    echo $username:$passwort |chpasswd
    #---------

    würde alles erledigen!

    Gruß Nils
     
Thema:

Usernamen in die richtige Zeile anhängen (/etc/group)

Die Seite wird geladen...

Usernamen in die richtige Zeile anhängen (/etc/group) - Ähnliche Themen

  1. usernamen als argument übergeben

    usernamen als argument übergeben: Hi ich bin anfänger auf dem gebiet und möchte ein einfaches backup script schreiben. #!/bin/bash #Bei Ausführung des Scripts werden alle Datein...
  2. Usernamen ändern, was passiert mit dann mit /home

    Usernamen ändern, was passiert mit dann mit /home: wenn ich den Usernamen mit usermod -l michael mickändere, was muss ich dann tun damit das vorhandene /home in den Besitz von mick übergeht....
  3. FTP Usernamen werden abgehackt

    FTP Usernamen werden abgehackt: Hallo zusammen. ich habe auf der Arbeit als Webprogrammier viel mit FTP zu tun. Ich nutze Krusader und Konqueror für die FTP Verbindungen. Nun...
  4. Usernamen zu UID rausfinden

    Usernamen zu UID rausfinden: Moin, wie kriegt man mit C den Usernamen zu einer User-ID raus? Ich bin mir ziemlich sicher, dass es dafuer eine Funktion gibt, aber ich hab's...
  5. Die Bedeutung eurer Usernamen???

    Die Bedeutung eurer Usernamen???: Da ich sehr oft hier im Forum bin und viele Beiträge lese, fallen mir immer wieder recht außergewöhnliche Nicknames auf die interessant klingen....