Zum Inhalt springen

van_haakonnen

Mitglieder
  • Gesamte Inhalte

    43
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von van_haakonnen

  1. 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...
  2. Wie auf Seite 2 steht. Ich will nicht einfach alle Ordner löschen und alle Symlinks neu anlegen sondern überprüfen ob sie schon vorhanden sind und wirklich nur dann neu anlegen... also will ich hmhm auslesen ob es halt den Symlink den er gerade anlegen soll schon gibt... irgendwie so...
  3. hmhm... ich war leider sehr lange krank und konnte nicht weitermachen.. also ich grabe den threat mal wieder aus das mit dem cat xx habe ich noch nicht wirklich verstanden.. ich habe es jetzt mal so umgebaut: #!/bin/sh #set -x clear echo echo echo "SYMLINKS" echo #Konfiguration QUELLE=home/test ZIEL=home/test2 #Root-Rechte if [ "$UID" -ne "0" ] then echo "Sie benoetigen Root-Rechte." exit $E_NOTROOT fi #Symlink for name in $(cat xx); do test -L "$lnam" && { echo "'$name' ist ein vorhandener Link."; } || { echo "'$name' ist kein Link."; foo=0 for i in $(find /$QUELLE/) do liste[$foo]=$(basename $i) foo=$foo+1 done for name in ${liste[@]} do eins=${name:0:1} zwei=${name:1:1} mkdir -p /$ZIEL/$eins/$zwei ln -sf /$QUELLE/$name /$ZIEL/$eins/$zwei/$name done } done echo "Die Links wurden erfolgreich angelegt bzw. aktualisiert!" echo exit 0 Aber dabei bekomme ich folgendes: cat: xx: No such file or directory
  4. okay - danke aaaber - an welcher Stelle muss ich das jetzte einbauen damit es funktioniert? :confused: das rm -Rf /$ZIEL/* nehme ich raus. Und dann baue ich das andere....wo und wie ein? Tut mir leid aber ich bin doch nen Anfänger... :hells:
  5. ich hab doch ne Frage... wir haben ja jetzt einfach ein rm -Rf /$ZIEL/* und löschen sicherheitshalber den ganzen Inhalt des Zielordners... Wie müsste das denn aussehen, wenn man eine Überprüfung einbauen will und die Links nur dann anlegt wenn Sie noch nicht vorhanden sind? Also nur neue anlegt...
  6. PERFEKT! Jetzt geht es problemlos! Ich dankeeeeeeeeeeee euch! :uli
  7. Okay habe ich verändert. Es sieht jetzt also so aus: #!/bin/sh #set -x clear echo echo echo "SYMLINKS" echo #Konfiguration QUELLE=home/test ZIEL=home/test2 #Root-Rechte if [ "$UID" -ne "$ROOT_UID" ] then echo "Sie benoetigen Root-Rechte." exit $E_NOTROOT fi #Symlink rm -R /$ZIEL/* foo=0 for i in $(find /$QUELLE/) do liste[$foo]=$(basename $i) foo=$foo+1 done for name in ${liste[@]} do eins=${name:0:1} zwei=${name:1:1} mkdir -p /$ZIEL/$eins/$zwei ln -s /$QUELLE/$liste /$ZIEL/$eins/$zwei/$liste done exit 0 Jetzt legt er alle Ordnerstrukturen richtig an. Also er erzeugt den ersten Ordner korret und den darinliegenden auch. Aber als links erstellt er jetzt immer einen Ordner "test"-Link... ////EDIT Also mit folengem Code legt er auch die Symlinks richtig an: foo=0 for i in $(find /$QUELLE/) do liste[$foo]=$(basename $i) foo=$foo+1 done for name in ${liste[@]} do eins=${name:0:1} zwei=${name:1:1} mkdir -p /$ZIEL/$eins/$zwei ln -s /$QUELLE/$name /$ZIEL/$eins/$zwei/$name done Nur bekomme ich eine Fehlermeldung bei der Ausführung des Scripts: SYMLINKS ./script-final2.sh: line 18: [: : integer expression expected rm: cannot remove `/home/test2/*': No such file or directory ln: `/home/test2/t/e/test/test': File exists ln: `/home/test2/t/e/test/test': File exists
  8. Hm... nachdem ich mir nun auch einen Kaffee geholt habe bereitet mir das ein kleines verständnisproblem... Also eigentlicht sollte es doch ausreichen wenn man der der Variablen liste immer nur den aktuellen Namen zuweist... das wird dann abgearbeitet und dann der nächste name in die variable geschrieben... dann wieder abgearbeitet.. oder nicht? Bzw. wenn ich das mit dem Array mache... an welcher stelle müsste ich das denn einbinden?
  9. okay Erstmal das Script: #!/bin/sh #set -x clear echo echo echo "SYMLINKS" echo #Konfiguration QUELLE=home/test ZIEL=home/test2 #Root-Rechte if [ "$UID" -ne "$ROOT_UID" ] then echo "Sie benoetigen Root-Rechte." exit $E_NOTROOT fi #Symlink rm -R /$ZIEL/* liste=Tobi for i in $(find /$QUELLE/) do basename $i $liste echo $liste for name in $liste do eins=${name:0:1} zwei=${name:1:1} mkdir -p /$ZIEL/$eins/$zwei ln -s /$QUELLE/$liste /$ZIEL/$eins/$zwei/$liste done done exit 0 Soooo - jetzt habe ich ja der Variablen "list" einfach mal Tobi zugewiesen... Dann funktioniert das auch. also er legt im ORdner Test2 erst den Ordner T und dann daran das 0 an. Dann den Link zu dem eigenentlichen Ordner. Das Problem besteht jetzt darin, dass in der Schleife irgnedwie (also hier: basename $i $liste) der Variablen nichts zugewiesen wird. Eigentlich sollte er da ja der Reihe nach die ganzen Namen durchgehen... Das ist bestimmt nur ein Syntaxfehler.....
  10. Jo - danke dir. Also ich habs jetzt so und das funktioniert auch mit dem Anlegen der Links: for name in $liste do eins=${name:0:1} zwei=${name:1:1} mkdir /$ZIEL/$eins mkdir /$ZIEL/$eins/$zwei ln -s /$QUELLE/$liste /$ZIEL/$eins/$zwei/$liste done Bleibt nur leider immernoch das Problem, dass der der Variablen $liste nicht korrekt die Namen zuweist... Ich habe das mit dem mkdir -p /$ZIEL/$eins/$zwei aber so geändert. Das sieht einfach schöner aus :-) Ansonsten funktioniert es ja jetzt und macht das was es auch machen soll...
  11. Also wenn ich es so abändere: for name in $liste do eins=${name:0:1} zwei=${name:1:1} mkdir /$ZIEL/$eins mkdir /$ZIEL/$eins/$zwei done Dann legt er die Ordner erfolgreich an : Bleibt jetzt nur noch das Problem mit der Zuweisung in die Variable liste und dann noch das Anlegen der symlinks in dem Verzeichnis... Dann müsste es das doch gewesen sein... juhu
  12. Also hier nochmal die Ausgaben des bisherigen Scriptes ohne "set -x": 81-2-133-8:/home# ./script-final2.sh SYMLINKS ./script-final2.sh: line 18: [: : integer expression expected rm: cannot remove `/home/test2/*': No such file or directory test Tobi mkdir: cannot create directory `home/test2/T/o': File exists florian Tobi mkdir: cannot create directory `home/test2/T/o': File exists fabian Tobi mkdir: cannot create directory `home/test2/T/o': File exists sascha Tobi mkdir: cannot create directory `home/test2/T/o': File exists andre Tobi mkdir: cannot create directory `home/test2/T/o': File exists sabine Tobi mkdir: cannot create directory `home/test2/T/o': File exists nina Tobi mkdir: cannot create directory `home/test2/T/o': File exists hannes Tobi mkdir: cannot create directory `home/test2/T/o': File exists Ist ja klar - er liest den Namen jetzt richtig aus... schreibt ihn aber irgendwie nicht in die Variable $liste... Da ich zum Probieren $liste = Tobi gesetzt habe versucht er überall die Ordnerstruktur dafür anzulegen... aber..trotzallem legt er noch keine Ordner an... also da passiert irgnedwie nichts... Später im richtigen einsatzgebiet werden alle usernamen klein geschrieben sein...
  13. hmhm... vielen dank. was würde ich ohne dich tun?! :uli Also ich habe das bis hierhin mal eingebaut... aber ich bekomme einen Fehler den ich nicht verstehe... habe daraufhin die Pfade etwas verändert aber das Ergebnis bleibt das gleiche... So sieht es jetzt aus: #!/bin/sh set -x echo echo echo "SYMLINKS" echo #Konfiguration QUELLE=/home/test ZIEL=/home/test2 ANZAHL=4 #Root-Rechte if [ "$UID" -ne "$ROOT_UID" ] then echo "Sie benoetigen Root-Rechte." exit $E_NOTROOT fi #Symlink rm /$ZIEL/* liste=Tobi >>>> DAS WAR NUR MAL TESTWEISE... for i in $(find /$QUELLE/) do basename $i $liste echo $liste for name in $liste do eins=${name:0:1} zwei=${name:1:1} mkdir $ZIEL/$eins/$zwei done done exit 0 Die Zuweisung in die Variable $liste will irgnedwie noch nicht. Ich erhalte wenn ich die ausgeben lasse gar ncihts... dann habe ich testhalber mal "Tobi" in die Variable geschrieben... damit funktioniert das ordneranlegen an sich... zumindest theoretisch... er zeigt es als erfolgreich an aber wenn ich nachsehe, dann ist da nichts... Das sind die Ausgaben: 81-2-133-8:/home# ./script-final2.sh + echo + echo + echo SYMLINKS SYMLINKS + echo + QUELLE=home/test + ZIEL=home/test2 + ANZAHL=4 + '[' 0 -ne '' ']' ./script-final2.sh: line 16: [: : integer expression expected + rm '/home/test2/*' rm: cannot remove `/home/test2/*': No such file or directory + liste=Tobi ++ find /home/test/ + basename /home/test/ Tobi test + echo Tobi Tobi + eins=T + zwei=o + mkdir home/test2/T/o mkdir: cannot create directory `home/test2/T/o': File exists
  14. Also soweit ist es...: --- #!/bin/sh set -x echo echo echo "SYMLINKS" echo #Konfiguration QUELLE=home/test ZIEL=home/test2 ANZAHL=4 #Root-Rechte if [ "$UID" -ne "$ROOT_UID" ] then echo "Sie benoetigen Root-Rechte." exit $E_NOTROOT fi #Symlink rm /$ZIEL/* for i in $(find /$QUELLE/) do basename $i | $liste echo $liste | cut -c3 done exit 0 --- Aber es funktioniert noch nicht mit dem ersten buchstaben auslesen ... wie bekomme ich das denn hin, dass er den ersten und zweiten wirklich nimmt? Dann könnte ich ja innerhalb der Schleife per mkdir §ersterbuchstabe und $zweiterbuchstabe die ordner anlegen... vielleicht mit mkdir -p ... aber wie die Syntax da ist habe ich auch noch nicht ganz verstanden....
  15. hm... ja... also theoretisch muss man das doch dann so machen können... for var1 in $(find /$QUELLE/ -type d | cat -c 3 $ANFANG ... dann hätte man den ersten Buchstaben... dann das nochmal mit cat -c 4 für den zweiten... Aber wie baue ich das in die Schleifen ein damit es funktioniert? Ich sah jetzt hier 4 Stunden daran und ich bin zu dooof :confused: :eek
  16. Hallo, natürlich musste das bei "Sabine" "/s/a/" sein. Habe ich mich verguckt als ich es getippt habe... Genau - das macht es komplizierter... Die bisherige Lösung der Benutzerkonten ist aber leider so in diesem Vor- Nachnamenordnersystem eingeteilt. Die Neue soll einfach direkt mittels dem Benutzernamen funktionieren. Da aber einige Programme auf den alten Pfad z.B. /Home/Test2/s/a/sabineschmidt eingestellt sind soll man von dort aus per Link automatisch auf das neue Verzeichnis gelangen. Damit man nichts weiter verändern muss... Nein - das sind keine Homeverzeichnisse in einer Domäne...
  17. Vielen, vielen Dank! Perfekt erklärt! Also ich habe vorher noch nicht wirlklich viel im Bereich Bash gemacht... Aber ich habe auch gerade leider gesehen, dass ich schwachsinn gemacht habe... die Struktur ist leider so falsch... Ich brauche das andersherum... wir haben z.B. gegeben: /Home/Test1/klauspeter /Home/Test1/henrymühle "" "" /sabineschmidt etc... hier können beliebig viele Nutzer stehen... in einer Ordnerebene. Jetzt soll aus diesen Usern eien andere Struktur angelegt werden... Diese Soll dann ähmlich aussehen wir oben. Es soll dann eine Struktur erzeugt werden aus den Namen der Benutzerordner... Immer der erster Buchstabe als Ordner und dann nochmal der zweite - darin dann der Symlink auf den eigentlichen Ordner des Benutzers in Test1 Also: /Home/Test2/k/l/klauspeter > /Home/Test1/klauspeter /Home/Test2/h/e/henrymühle > /Home/Test1/henrymühle /Home/Test2/s/s/sabineschmidt > /Home/Test1/sabineschmidt Die Namen werden immer kleingeschrieben. So ist es richtig... tschuldige... habe ich erst richtig verstanden als ich gesehen habe, wie das Ergebnis oben in dem Script wirklich aussieht... Vielen Dank nochmal!
  18. - Vielen Dank t3quill4b0y! Kannst du das ganze vielleicht ein ganz kleines bisschen erklären? Also ich möchte es nicht nur einfach verwenden - ich will es auch verstehen...
  19. Hallo Leute, ich habe mal eine Frage an euch: Ich habe mir gerade den Advanced Scripting Guide ein bisshen angeguckt aber so wirklich viel weiter hat mich das alles nicht gebracht... Ich muss ein relativ einfaches Script schreiben (für mich privat). Es geht darum, dass anfangs ein Pfad eingegeben werden kann. z.B. /root/verzeichnis/ und ein weiterer Pfad z.B. /root/verzeichnisNEU/ . In dem Ausgangspfad liegen weitere Ordner... viele Ordner... Nun sollen in dem zweiten Pfad in dem Verzeichnis "VerzeichnisNEU" lauter links zu den anderen Ordnern bzw. Dateien angelegt werden. Es soll also am ende eine Identische Struktur entstehen - nur aus lauter links. Jedoch auch nur in dieser einen Ebene. Also das Script muss nicht in den Ordnern tiefer gehen. Gleichzeitig soll geprüft werden ob ein Link zu einem Ordner schon angelegt wurde - dieser soll dann um Rechenleistung zu sparen nicht nochmals angelegt werden. Bei gelöschten Ordnern soll auch der Link gelöscht werden. Ich hoffe ihr könnt mir ein bisschen weiterhelfen oder mit vielleicht eine Idee geben :-) Das ganze soll ein Shell Script für Linux / Unix sein... Vielen Dank im Voraus
  20. Hallo Leute, ich soll für meinen Ausbildungsbetrieb ein Ticket-System bzw. einen Helpdesk realisieren. Dort sollen Fehlermeldungen, Hardwaredefekte, etc. direkt (zunächst nur von Mitarbeitern) eingetragen werden können. Somit sollen auftretene Probleme schnell bekannt gemacht werden können. Wenn jemand einen Server z.B. updatet und dieser dadurch nicht erreichbar sein sollte, sollen diese Dinge dort ebenfalls eingetragen werden. Ebenfalls soll es die Möglichkeit geben (wie bei einem Support) auf diese Tickets zu antworten, sodass z.b. eine, dass Anfrage Mailserver geht nicht direkt vom zuständigen Mitarbeiter beantwortet werden kann. Die Tickets sollten öffentlich zusammen mit den Antworten einsehbar sein. Nun stehe ich vor dem Problem, dass ich nicht genau weiß auf welches System ich denn nun setzen soll. Es gibt ja diverse Open Source Lösungen jedoch scheint mir die verbreitetste OTRS zu komplex. Das System soll eher einfach und ohne Anleitung zu bedienen sein. Habt ihr eventuell mit soetwas schon gearbeitet und könnt etwas empfehlen? Vielen Dank! Van_Haakonnen

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...