Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

24.02.2004, 14:42

Skript -- Problem bei der Ausgabe

Hi @all,

ich hab folgendes kleine Skript:

Quellcode

1
2
3
4
5
6
7
8
9
GROUP_PFAD=/etc/group
i=700

for USER in `awk -F: '{print $1}' /etc/passwd`
 do
   GROUP=`grep $USER $GROUP_PFAD | awk -F: '$3>=100 {print $1}'`
   echo "groupadd -g $i $GROUP"
   i=`expr $i + 1`
 done
Wie man sehen kann, holt sich das Skript die user aus der /etc/passwd und gibt mir dann die grouppen aus, in denen sich einer mindest einer dieser user befindet.
Dann generiert er mir ein groupadd befehl.
Jetzt habe ich 2 Probleme.

1. Er gibt mir ein paar Gruppen aus, in denen keine User sind (siehe unten)

2. Es kommt folgende ausgabe:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
groupadd -g 700
groupadd -g 701
groupadd -g 702
groupadd -g 703
groupadd -g 704
groupadd -g 705
groupadd -g 706
groupadd -g 707
groupadd -g 708
groupadd -g 709
groupadd -g 710
groupadd -g 711
groupadd -g 712
groupadd -g 713 nobody ---> Hier sind keine USER drin 
nogroup ------------------------> Warum bring er das auch raus ?
groupadd -g 714
groupadd -g 715
groupadd -g 716
groupadd -g 717
groupadd -g 718
groupadd -g 719 radiusd  ---> Hier sind keine USER drin 
groupadd -g 720
groupadd -g 721 privoxy  ---> Hier sind keine USER drin 
groupadd -g 722
groupadd -g 723
groupadd -g 724 grouptest
An sich sollte er mir nur folgendes ausgeben:

Quellcode

1
groupadd -g 700 grouptest
Den grouptest ist die einzigste gruppe die einen User auf der passwd hat und deren gID größer 100 ist.

Kann mir jemand weiter helfen ? Blick das nicht so ganz :?
DANKE SCHON MAL IM VORAUS

2

24.02.2004, 15:01

Koenntest du mal erklaeren, was du damit bezwecken willst? Dann kann man dir vielleicht besser helfen.

3

24.02.2004, 15:11

Wir haben öftes den fall, dass wir Systme Übernehmen müssen (z.B. HP-UX auf SuSE Linux). Die user müssen natürtlich mitübernohmen werden. Damit ich sie nicht Händisch anlegen muss, habe ich ein kleines skript geschrieben, der mir das Useradd-Befehl generiert.
Jetzt möchte ich noch als Erweiterung ein Funktion schreiben, der mir das "groupadd" befehl generiert (siehe skript), aber das funkt noch nicht so wie das soll :?

4

24.02.2004, 15:45

Mir ist nicht ganz klar, welche Gruppen du uebernehmen willst (alle mit gid >99?) ...

Das haengt natuerlich von dem Format von /etc/group ab, aber im Prinzip muesste folgendes zum generieren der Befehle reichen:

awk -F: '$3>=100{print "groupadd -g "$3" "$1}' /etc/group

Ah, Gruppen ohne Benutzer wolltest du nicht ... das muesste noch rein:

for x in `awk -F: '$4>=100{print $4}' /etc/passwd|sort|uniq`;do awk -F: /$x/'{print "groupadd -g "$3" "$1}' /etc/group;done

Muesste noch einfacher gehen, aber teste es mal ...

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Technician« (24.02.2004, 16:12)


5

24.02.2004, 16:41

Hi, danke für deine Posts ... Du hast recht, ich hätte noch sagen sollen, dass die Gruppen ohne Benutzer nicht ausgegeben werden sollen.
Ich hab deine 2 Varianten ausgetestet, aber das hat auch nicht so ganz hingehauen ... ?

Habe es mal so versucht, ist fast so wie es sein soll:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
GROUP_PFAD=/etc/group
i=700

for USER in `awk -F: '{print $1}' /etc/passwd`
 do
   GROUP=`grep $USER $GROUP_PFAD | awk -F: '$3>=100 {print $1}'`
   if  [ "$GROUP" != "" ]
    then
     echo "groupadd -g $i $GROUP"
     i=`expr $i + 1`
   fi
 done
Aber es funkt noch nicht so ganz, das ist die Ausgabe:

Quellcode

1
2
3
4
5
6
groupadd -g 700 nobody  --> Keine USER in der Gruppe
groupadd -g 701 radiusd   --> Keine USER in der Gruppe
groupadd -g 702 privoxy   --> Keine USER in der Gruppe
groupadd -g 703 grouptest 
test2 --> Ein Benutzer auf der Passwd befindet sich in der gruppe test2, 
aber es wird kein groupadd befehl generiert :keineahnung:
Die /etc/group sieht folgendermasen aus:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
root:x:0: 
bin:x:1:daemon 
daemon:x:2: 
sys:x:3: 
tty:x:5: 
disk:x:6: 
lp:x:7: 
www:x:8: 
kmem:x:9: 
wheel:x:10: 
mail:x:12: 
news:x:13: 
uucp:x:14:sag10c0, grouptest_user 
shadow:x:15: 
floppy:x:19: 
cdrom:x:20: 
console:x:21: 
utmp:x:22: 
at:x:25: 
public:x:32: 
video:x:33:sag10c0 
games:x:40: 
xok:x:41: 
trusted:x:42: 
modem:x:43: 
ftp:x:49: 
man:x:62: 
sshd:x:65: 
nobody:x:65533: 
nogroup:x:65534: 
users:x:100: 
postfix:x:51: 
maildrop:x:59: 
ntadmin:x:71: 
ldap:x:70: 
named:x:44: 
radiusd:x:101: 
privoxy:x:102: 
mailman:x:67: 
localham:x:56: 
grouptest:x:600:grouptest_user 
test:x:1000: 
test2:x:1001:grouptest_user

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »geist_der_foren« (24.02.2004, 16:41)


6

24.02.2004, 16:48

Was meinst du? Du sollst nur

for x in `awk -F: '$4>=100{print $4}' /etc/passwd|sort|uniq`;do awk -F: /$x/'{print "groupadd -g "$3" "$1}' /etc/group;done

eingeben und das nicht irgendwie in dein Script einbauen. Muesste reichen.

7

24.02.2004, 16:54

Genau das habe ich gemacht ...aber die ausgabe sieht folgendermasen aus(vergleiche /etc/group - Oben):

Quellcode

1
2
3
4
5
6
7
groupadd -g 100 users
groupadd -g 1000 test
groupadd -g 1001 test2
groupadd -g 101 radiusd
groupadd -g 102 privoxy
groupadd -g 65533 nobody
groupadd -g 65534 nogroup


Und eigentlich sollte er ja nur folgendes ausgeben:

Quellcode

1
2
groupadd -g 700 grouptest
groupadd -g 701 test2


P.S.: Die gID soll ab 700 raufgezält werden (sorry, ich dachte es aus dem skript hervorgeht)

EDIT:
Jetzt verstehe ich was du da machst ... Du holst die Gid auf der /etc/passwd ... Das ist auch ein gute IDEE ! Mal dass muss man aber ein bisschen umändern ...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »geist_der_foren« (24.02.2004, 16:58)


8

24.02.2004, 17:02

Zitat

Die gID soll ab 700 raufgezält werden (sorry, ich dachte es aus dem skript hervorgeht)

Mein "Script" (Einzeiler) uebernimmt einfach die ID aus /etc/group. Wenn dir das nicht passt baust du einfach einen Zaehler ein, sollte ja kein Problem sein.

Zitat

Jetzt verstehe ich was du da machst ... Du holst die Gid auf der /etc/passwd ... Das ist auch ein gute IDEE ! Mal dass muss man aber ein bisschen umändern ...

Sag Bescheid wenn du noch Fragen hast.

Thema bewerten