van_haakonnen Geschrieben 5. Januar 2006 Teilen Geschrieben 5. Januar 2006 Hallo, ich habe wieder einmal eine Frage an euch: Zwei Dateien habe ich gegebe... Eine nach folgendem Muster: y00999999: abgelaufen seit 1 Tagen - (password will expire: Sat Dec 31 13:10:33 2005) willie: abgelaufen seit 1 Tagen - (password will expire: Sat Dec 31 13:10:33 2005) Eine weitere mit folgendem Inhalt: y0xxxxxxx@server1.firma.de y0yyyyyy@server2.firma.de Jetzt bestand die Aufgabe zunächst darin aus der ersten Datei alle User herauszusuchen deren Passwort z.B. 356 Tage abgelaufen ist. Dies habe ich wiefolgt gelößt: #!/bin/bash #Variablen FILE=check_abgel.01-01-06; OFILE=output.txt; I=$365; #Verarbeitung while read USER adummy bdummy T Rest ; do if [ $T -gt $I ] ; then echo "$USER"|tr -d ":"; fi; done <"$FILE" >"$OFILE" echo "All done"; [/PHP] Die abgelaufenden Benutzernamen werden also untereinander in die Datei output.txt geschrieben. Jetzt muss ich die BEnutzernamen noch den korrekten Server zuweisen. Ich habe mir also gedacht zunächst einfach die Liste output.txt durchzugehen und dann jeweils einfach den richtigen Server dahinterzuschreiben. So das, dass ganze am Ende so aussieht: y0yyyyyy server1.firma.de y0xxxxxxx server2.firma.de henning server3.firma.de Das soll also in einer neuen Datei stehen. Aus dieser neuen Datei müssen dann für jeden Server zwei Textdateien erzeugt werden. EInmal mit den Benutzern deren Accounts mit y0 beginnen und dann eine zweite Datei mit allen anderen. Das Prozesere für jeden Server der gefunden wird. Aber wie setzte ich das um? Ich wäre euch sehr dankbar für konkrete Codebeispiele weil ich nicht wirklich Ahnung habe... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
1226 Geschrieben 5. Januar 2006 Teilen Geschrieben 5. Januar 2006 Aus dieser neuen Datei müssen dann für jeden Server zwei Textdateien erzeugt werden. EInmal mit den Benutzern deren Accounts mit y0 beginnen und dann eine zweite Datei mit allen anderen. Das Prozesere für jeden Server der gefunden wird. grep ^y0 output.txt > output_1.txt grep -v ^y0 output.txt > output_2.txt Mit der ersten Zeile wird output.txt nach allen Zeilen durchsucht, die mit y0 beginnen (deswegen das Dachzeichen), und das Suchergebnis nach output_1.txt geschrieben. Mit der zweiten Zeile wird nach allen Zeilen gesucht, die nicht (-v) mit y0 anfangen gesucht und nach output_2.txt geschrieben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
van_haakonnen Geschrieben 5. Januar 2006 Autor Teilen Geschrieben 5. Januar 2006 Jawoll - vielen dank! Also ein bisschen was habe ich auch schon herausbekommen: Das zuordnen der Benutzer zu den korrekten Server kann man so machen: #!/bin/bash #Zuordnung der Server zu den einzelnen Useraccounts #Variablen FILE=output.txt OFILE=outputsort.txt popmap=/home/Script2/popmap #Verarbeitung while read USER Rest ; do grep $USER $popmap; done <"$FILE" >"$OFILE" echo "All done"; [/PHP] Damit erhalte ich dann in der Datei outputsort.txt alle User deren Passwort seit X - Tagen abgelaufen ist mit dem dazugehörigen Server. Das ganze sieht in der Datei outputsort.txt so aus: [email]henning@server1.firma.de[/email] [email]y0873742@server2.firma.de[/email] [email]y0344543@server2.firma.de[/email] [email]gaus@server1.firma.de[/email] [email]markus@server3.firma.de[/email] [email]y0978832@server4.firma.de[/email] Damit habe ich schonmal alles in einer Datei. Jetzt habe ich deine Idee befolgt und die Y-Nummern von den anderen Usern getrennt: Also entstanden zwei Dateien nach folgendem Script: [PHP]#!/bin/bash #Variablen FILE=outputsort.txt #Programmcode grep ^y0 outputsort.txt > output_y.txt grep -v ^y0 outputsort.txt > output_sonst.txt exit 0 Dieses Script muss aber noch um etwas erweitert werden. oder einfach ein neues geschrieben... Das ist jetzt mein größtes Problem... Ich muss jetzt für jeden Server der dort auftaucht beide Ausgaben in Form von Y-nummern und anderen Benutzern erstellen. Hierfür müssen also die output_y.txt und output_sonst.txt durchgegangen werden und dann sollen am Ende Dateien entstehen die z.B. wie folgt aussehen: server01.firma.de_Y-Nummern.txt sowie server01.firma.de_Andere.txt server01.firma.de_Y-Nummern.txt sowie server02.firma.de_Andere.txt In den Dateien können die User ruhig wieder in der Form stehen, wie sie auch in der outputsort.txt zu finden sind. Könnt ihr mir dabei helfen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
1226 Geschrieben 5. Januar 2006 Teilen Geschrieben 5. Januar 2006 Wenn ich es richtig verstanden habe, gibt es auf der einen Seite eine bestimmte Anzahl von Servern, deren Namen bekannt sind. Auf der anderen Seite gibt es zwei Arten von Usern - solche, die mit y0 beginnen und solche, die nicht mit y0 beginnen. Dann würde ich einfach ein Textdatei serverliste.txt erstellen, wo in jeder Zeile ein Server aufgeführt wird. Zusätzlich existiert die Datei output.txt in der ursprünglichen Form (ohne die Trennung zwischen y0 und nicht-y0). Dann bietet sich das folgende Skript an: #!/bin/bash while read i do grep $i output.txt | grep ^y0 > ${i}_Y-Nummern.txt grep $i output.txt | grep -v ^y0 > ${i}_Andere.txt done < serverlist.txt Hier wird die Datei serverlist.txt sequentiell gelesen und jedes Element (respektive jeder Server) einmal als Schleifenvariable gesetzt. Dann wird output.txt nach Zeilen mit dem Vorkommen den jeweiligen Servernamen durchsucht, und diese Ergebnisse dann nochmal nach y0- und nicht-y0-Usern. Die Ergebnisse werden dann in Dateien, die nach Servernamen und Benutzertyp benannt sind, gespeichert. Sorry, wenn das jetzt etwas unverständlich ist, ich hab das fünfte Bier in Arbeit Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
van_haakonnen Geschrieben 6. Januar 2006 Autor Teilen Geschrieben 6. Januar 2006 juhu - das funktioniert problemlos. Habe noch etwas modifiziert aber ganz wunderbar. Eine Sache ist mir dann doch noch aufgefallen. Ich glaube es ist besser, wenn in den Enddateien nur noch die Usernamen bzw. Y0-Nummern stehen. Also nicht mehr mit dem entsprechenden Server durch das @ dahinter... wobei es egal ist... naja... ich weiß nicht ob es leichter ist wenn man so weiterarbetiet... also eine einzige Sache muss das Script oder ein weiteres jetzt noch machen: Es soll mittels eine "du" - Befehls auf den jeweiligen Servern nachgesehen werden wieviel Speicher die User belegen. Jeder User hat dort also einen festen Pfad und einen Ordner der so heißt wie sein Username. Also ich denke man müsse dafür den "du -sb" Befehl verwenden. Also der Server auf dem das Script ausgeführt wird ist berechtigt auf die anderen Zuzugreifen. Nur wie schreibe ich die Schleife, damit hinter jedem User jetzt in den alten Ausgabedateien Servername_Y-Nummern.txt und Servername_Andere.txt auch noch der verwendete Speicherplatz steht? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
1226 Geschrieben 6. Januar 2006 Teilen Geschrieben 6. Januar 2006 Ohne das jetzt getestet zu haben, hier eine quick-and-dirty-Lösung, die aus der ürsprünglichen Liste serverlist.txt erst mal eine solche mit verbratenem Plattenplatz (in kB) im Format USERNAME:RECHNERNAME:PLATTENPLATZ schreibt (serverliste_2.txt), und dann die Trennung nach y0 und andere vornimmt. #!/bin/bash while read i do USERNAME=$(echo $i|cut -d'@' -f1) REMOTE_HOST=$(echo $i|cut -d'@' -f2) echo "$USERNAME:$REMOTE_HOST:$(remsh $REMOTE_HOST du -sk /pfad/$USERNAME|awk '{print $1}')" >> serverlist_2.txt done < serverlist.txt while read i do USERNAME=$(echo $i|cut -d':' -f1) REMOTE_HOST=$(echo $i|cut -d':' -f2) DISK_SPACE=$(echo $i|cut -d':' -f3) if [ "$(echo $USERNAME | cut -b1,2)" = "y0" ] then echo "$USERNAME $DISK_SPACE" >> ${REMOTE_HOST}_Y-Nummern.txt else echo "$USERNAME $DISK_SPACE" >> ${REMOTE_HOST}_andere.txt fi done < serverlist_2.txt PS: Wenn das hier funktionieren sollte, schuldest du mir ein Bier Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
van_haakonnen Geschrieben 6. Januar 2006 Autor Teilen Geschrieben 6. Januar 2006 Dankeeeeeeeeee - ich habs noch nicht ausprobiert aber du bekommst so oder so schon ein BIER! :uli Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
1226 Geschrieben 6. Januar 2006 Teilen Geschrieben 6. Januar 2006 Ich trinke Rothaus Pils Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
cane Geschrieben 6. Januar 2006 Teilen Geschrieben 6. Januar 2006 Wegen solchen Sachen ist es sinvoll Useraccounts in Verzeichnisdiensten wie LDAP oder einer Datenbank zu führen... Wre das nicht einfacher? mfg cane Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
1226 Geschrieben 6. Januar 2006 Teilen Geschrieben 6. Januar 2006 @cane: Kann schon sein, dass es einfacher wäre. Eine Datenbank will aber auch gepflegt/gewartet sein. Und LDAP kostet Geld. Ich sehe nicht, wie Sie hier konstruktiv zur Behebung des von van_haakonnen geschilderten Problems beitragen/beigetragen haben. Stellen Sie doch mal Ihre Lösungen vor. Mit dem Einwerfen von Buzzwords (hach, ich liebe Anglizismen) ist keinem geholfen. Bitte nicht falsch verstehen, aber wenn das Kind in den Brunnen gefallen ist, hilft es wenig, aufzuzeigen, was in der Vergangenheit hätte anders laufen können. Just my $0,02 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
cane Geschrieben 6. Januar 2006 Teilen Geschrieben 6. Januar 2006 Bitte nicht falsch verstehen, aber wenn das Kind in den Brunnen gefallen ist, hilft es wenig, aufzuzeigen, was in der Vergangenheit hätte anders laufen können. Wo ist da was in den Brunnen gefallen? Außerdem möchte ich nur eine eventuell bessere, alternative Lösung für die Zukunft vorschlagen... @cane: Kann schon sein, dass es einfacher wäre. Eine Datenbank will aber auch gepflegt/gewartet sein. Ist aber einfacher zu warten als der jetzige Zustand, LDAP ist IMO noch geeigneter. Und LDAP kostet Geld. Unsinn - alle bekannteren Server-Dienste in OpenSource Betriebssystemen können mittlerweile per LDAP authentifizieren oder Daten aus dem LDAP ziehen. Außerdem ist LDAP keine Software sondern ein Protokoll, eine vereinfachte, weniger strikte Ableitung von X500... Die bekannteste Implementierung des LDAP-Verzeichnisdienstes ist OpenLDAP. Ich sehe nicht, wie Sie hier konstruktiv zur Behebung des von van_haakonnen geschilderten Problems beitragen/beigetragen haben. Eine eventuell besser geeignete Alternative ist immer konstruktive Kritik am jetzigen Zustand. Brille aufsetzen Stellen Sie doch mal Ihre Lösungen vor. Mit dem Einwerfen von Buzzwords (hach, ich liebe Anglizismen) ist keinem geholfen. Mein Squid-Proxy im Unternehmen authentifiziert User die Internnetzugriff versuchen per NTLM-Auth am ActiveDirectory (ist ja ein LDAP) und kann wenn gewünscht auch gruppenbasiert agieren. Mein OpenXchange Server (OX) lagert sämtliche Adressbücher, Kontakte und Logins in LDAP, kann ich so einfach in meinen MUA (Thunderbird) einbinden da dieser LDAP-fähig ist. Ein Freund entwickelt den OX mit und kann Implementierungen > 10.000 User über verteilte Standorte vorweisen. O.g. Dinge wie Kontakte lagern wie immer im LDAP. Der Bundestag setzt auch LDAP ein... Für SingleSignOn ist LDAP momentan das geeignetste Protokoll da von vielen Diensten unterstützt. mfg cane Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
1226 Geschrieben 7. Januar 2006 Teilen Geschrieben 7. Januar 2006 Wo ist da was in den Brunnen gefallen? Außerdem möchte ich nur eine eventuell bessere, alternative Lösung für die Zukunft vorschlagen... Richtig - eine Lösung für die Zukunft. Trotzdem ändert das nichts am aktuellen Problem. Unsinn - alle bekannteren Server-Dienste in OpenSource Betriebssystemen können mittlerweile per LDAP authentifizieren oder Daten aus dem LDAP ziehen. Außerdem ist LDAP keine Software sondern ein Protokoll, eine vereinfachte, weniger strikte Ableitung von X500... Die bekannteste Implementierung des LDAP-Verzeichnisdienstes ist OpenLDAP. Ich sehe immer noch nicht, warum (Open)LDAP nichts kosten sollte. Ich brauche nunmal Software, um darauf zuzugreifen. Und jetzt kommt der springende Punkt: bei OpenSource kann jeder am Code rumfrickeln - aber so richtig verantwortlich (im Sinne von haftbar) ist keiner. Heisst also, ich laufe in einen Bug, und kriege ihn nicht oder nur mit großer Verzögerung behoben. So etwas kann ich im produktiven Umfeld nicht einsetzen. Also bin ich auf (externen) Support, den ich bezahlen muss. Eine eventuell besser geeignete Alternative ist immer konstruktive Kritik am jetzigen Zustand. Schlagworte sind in meinen Augen erstmal keine Alternative. Aber ich kann ja immer noch nachfragen, und wenn dann wie jetzt geschehen was konstruktives bei rumkommt... Brille aufsetzen Das finde ich gar nicht lustig. Für meine Sehbehinderung kann ich nichts. Mein Squid-Proxy im Unternehmen authentifiziert User die Internnetzugriff versuchen per NTLM-Auth ... Ab hier hab ich kaum etwas verstanden. Muss ich auch nicht, ist nicht mein Fachgebiet, aber so in etwa stelle ich mir konstruktive Vorschläge vor. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
cane Geschrieben 7. Januar 2006 Teilen Geschrieben 7. Januar 2006 Ich sehe immer noch nicht, warum (Open)LDAP nichts kosten sollte. Ich brauche nunmal Software, um darauf zuzugreifen. Software um drauf zuzugreifen? Also ich kann dir nicht folgen... Die meiste Serversoftware die mit vielen Usern arbeitet hat LDAP-Support integriert, also keine Zusatzkosten. Und jetzt kommt der springende Punkt: bei OpenSource kann jeder am Code rumfrickeln - aber so richtig verantwortlich (im Sinne von haftbar) ist keiner. Du redest viel Unsinn. Seit wann kann jeder mitcoden? ich kenne das nur so das man Patches beim zuständigen Maintener einreicht und dieser entscheidet. Und wer haftet bei kommerzieller Software bitte? Windows und SCO-Unix haben viele bekannte Bugs und es wird nichts geändert - wer haftet da bitte? Heisst also, ich laufe in einen Bug, und kriege ihn nicht oder nur mit großer Verzögerung behoben. So etwas kann ich im produktiven Umfeld nicht einsetzen. Wieder Unsinn, Bugs in OpenSource Produken werden regelmäßig schneller entdeckt und behoben. Also bin ich auf (externen) Support, den ich bezahlen muss Wenn Du keine eigenen Kompetenzen im Bereich eines Anwendungsgebiet hast bist Du audf Suppotrt angewiesen egal ob Du Closed- oder Open-Source einsetzt... mfgc cane Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
1226 Geschrieben 7. Januar 2006 Teilen Geschrieben 7. Januar 2006 Hier sollte jetzt eigentlich eine Antwort stehe. Aber da das alles nicht mehr zum Ursprungsthema gehört lasse ich das besser. Ende der Diskussion. Mein Argumente werden eh nur totgeredet. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
van_haakonnen Geschrieben 7. Januar 2006 Autor Teilen Geschrieben 7. Januar 2006 Also ich halte mich aus der Diskussion jetzt auch mal raus... ich kann nur soviel dazu sagen: Es handelt sich hierbei um ein System mit tausenden bzw. zehntausenden Benutzern. Diese sind eigentlich auch in einer Datenbank gespeichert. Jedoch ist dies alles etwas zu groß und zu komplex. Hier werden nicht nur Webspace, AFS-Speicherplatz, Mail-Adressen, Druckkonten, etc. zur Verfügung gestellt sondern noch vieles mehr... Die eigentliche Verwaltung der benutzer findet also in Datenbanken statt. Es wird auch eine LDAP Schnittstelle angeboten... als eine Schnittstelle von vielen... Meine Dateien die ich hier bekommen habe sind durch Cronjobs aus dem Mailsystem (welches wiederrum mit dem Datenbanksystem zusammenhängt) ausgelesen. Warum ich nicht direkt in der DB arbeiten darf, kann ich hier nicht offen legen. Also einfach mal was umstellen ist da nicht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
cane Geschrieben 7. Januar 2006 Teilen Geschrieben 7. Januar 2006 Dann passts ja Kannst ja mal Fragen ob Du nen DB-User / LDAP-Account bekommst der dann halt nur für "deinen" Bereich gilt oder vielleicht zumindest nen View auf ein paar tables bekommst. Würde deine Arbeit ja wesentlich erleichtern... Good Luck :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
van_haakonnen Geschrieben 9. Januar 2006 Autor Teilen Geschrieben 9. Januar 2006 hmhmhm... also irgenendwie gehts noch nicht so unbedingt... ich habe jetzt in der Datei serverlist2.txt folgenden Inhalt stehen: server1.firma.de:server1.firma.de: server2.firma.de:server1.firma.de: server3.firma.de:server1.firma.de: [...] das ganze für jeden Server drei Mal... Also es fehlen die User und der Speicherplatz... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
van_haakonnen Geschrieben 9. Januar 2006 Autor Teilen Geschrieben 9. Januar 2006 Mir ist noch etwas aufgefallen... Fehlt in dem Script nicht irgendwo noch die Datei outputsort.txt? In der standen ja die User mit dem Servernamen dahinter... Dem Script fehlt momentan noch diese Liste, oder? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
1226 Geschrieben 9. Januar 2006 Teilen Geschrieben 9. Januar 2006 Hmmmm, bei mir funktioniert das ohne Probleme. Vor jedem Durchlauf müssen die output-Dateien gelöscht werden, da immer hintendran geschrieben wird. Das Ausgangsformat ist wirklich username@rechner? Lässt sich mit dem Rechnernamen, wie er dort steht, remote Shell aufrufen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
van_haakonnen Geschrieben 9. Januar 2006 Autor Teilen Geschrieben 9. Januar 2006 Also ich hab da überall jetzt totalen Schwachsinn und steige nicht mehr durch... Kannst du mir mal deine Mail - Addy geben? Dann schicke ich dir mal alles was ich jetzt habe... Also remsh funktioniert definitiv auf einem der rechner. die anderen sind nicht freigeschaltet auf meinen usernamen. aber auf einem Server sollte es klappen. Tuts aber auch nicht... also von Hand komme ich drauf auf den Server... Ich habe es jetzt mal durchlaufen lassen... Auch in den Output - Daten steht unsinn.... wenn ich server01.firma.de z.b. öffne dann steht da das gleiche nochmal 10 mal drin... komisch... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
1226 Geschrieben 9. Januar 2006 Teilen Geschrieben 9. Januar 2006 @van_haakonnen: Sie haben Post Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.