Skriptfrage - Datendatei Zeile für Zeile abarbeiten
Hallo Liste, irgendwie komme ich trotz diverser Anleitungen nicht weiter. Aber vielleicht hat jemand von Euch einen Tip: Da ich viele User auf dem Server habe, lege ich die jeweils mit einem sehr einfachen Skript an. Dazu habe ich - ein CSV-File (userdaten.csv) mit den Daten sowie - ein Skript-File (useranlegen-vorbereiten.scr), das - ein weiteres Skript-File (useranlegen.scr) erzeugt, das ich um keine Fehler im ersten Skript abfangen zu müssen kurz nochmal im Texteditor anschaue. Allerdings wird dann _nicht_ zuerst (user1 angelegt + Account-Infomail erzeugt), als nächstes (user2 ....), sondern es werden zuerst alle Accounts angelegt, dann die nächste Aktion gestartet und zum Schluss bekomme ich eine Mail auf der zuerst _alle_ Vornamen, dann _alle_ Nachnamen, ... stehen - sprich die kann ich so nicht verwenden. D.h. ich bräuchte irgend ein Stück Skript, das mir eine Zeile aus "userdaten.csv" einliest, komplett in "useranlegen-vorbereiten.scr" durcharbeitet und dann die nächste Zeile aus "userdaten.csv" abarbeitet, die nächste, ... bis die Datei fertig ist. Was tun? Viele Grüsse Joachim Hier ein Auszug aus den Skripten: userdaten.csv: ---------------------------- Vorname:Name:Login:Passwort:MatrNr:Expires:Angelegt:Gruppe1:Gruppe2:Gruppe3 John:Mueller:jmueller:YF2uxV2b:231932:20030330:20021113:ws02gcd3:: .... useranlegen-vorbereiten.scr: ---------------------------- #!/bin/bash awk -F':' '{print "useradd -c "$1"_"$2" -d /export/home/1/"$3" -e "$6" -G "$8" -m -s /bin/false "$3;}' /verwaltung/userdaten.csv > /verwaltung/useranlegen.scr # awk -F':' '{print "smbpasswd -a "$3" "$4;}' /verwaltung/userdaten.csv >> /verwaltung/useranlegen.scr # awk -F':' '{print "Vorname: "$1}' /verwaltung/userdaten.csv > /verwaltung/useranlegen.tmp awk -F':' '{print "Nachname: "$2}' /verwaltung/userdaten.csv >> /verwaltung/useranlegen.tmp awk -F':' '{print "Login: "$3}' /verwaltung/userdaten.csv >> /verwaltung/useranlegen.tmp awk -F':' '{print "Passwort: "$4}' /verwaltung/userdaten.csv >> /verwaltung/useranlegen.tmp # mail -s Neue_Accounts root < /verwaltung/useranlegen.tmp [ ... ] und das erzeugt useranlegen.scr ---------------------------- useradd -c Vorname_Nachname -d /export/home/1/Login -e 20030330 -G Gruppe1 -m -s /bin/false Login useradd -c John_Mueller -d /export/home/1/jmueller -e 20030330 -G ws02gcd3 -m -s /bin/false jmueller smbpasswd -a Login Passwort smbpasswd -a jmueller YF2uxV2b .... Und die Mail: ---------------------------- Vorname: Vorname Vorname: John Nachname: Nachname Nachname: Mueller Login: Login Login: jmueller Passwort: Passwort Passwort: YF2uxV2b
Moin,
* Joachim Kieferle
Allerdings wird dann _nicht_ zuerst (user1 angelegt + Account-Infomail erzeugt), als nächstes (user2 ....), sondern es werden zuerst alle Accounts angelegt, dann die nächste Aktion gestartet und zum Schluss bekomme ich eine Mail auf der zuerst _alle_ Vornamen, dann _alle_ Nachnamen, ... stehen - sprich die kann ich so nicht verwenden.
- - - Schnipp - - - for user (`cat userdaten.csv`) do Mach mir den User done - - - Schnapp - - - Ich glaube nicht, daß zwei Skripte nötig sind, Du solltest alles geschmeidig in der Schleife unterbringen. Du solltest Deine Skripte nicht .scr nennen, das ist unüblich. Üblich is .sh. Thorsten -- There is no drug known to man which becomes safer when its production and distribution are handed over to criminals.
On Sat, 16 Nov 2002, Thorsten Haude wrote:
Du solltest Deine Skripte nicht .scr nennen, das ist unüblich. Üblich is .sh.
Dass jemand so eine Regel (.sh) hat ist ja ok, ABER BITTE ERZAEHLT NIEMAND DASS SIE ES AUCH SO MACHEN MUESSEN, ZU MINDEST NICHT OEFFENTLICH. SO EIN QUATSCH, das ist nicht unueblich. grr :-(( Achim
Achim Hoffmann wrote:
On Sat, 16 Nov 2002, Thorsten Haude wrote:
Du solltest Deine Skripte nicht .scr nennen, das ist unüblich. Üblich is .sh.
Dass jemand so eine Regel (.sh) hat ist ja ok, ABER BITTE ERZAEHLT NIEMAND DASS SIE ES AUCH SO MACHEN MUESSEN, ZU MINDEST NICHT OEFFENTLICH. SO EIN QUATSCH, das ist nicht unueblich.
grr :-(( Achim
Hallo Achim, nichts für ungut, aber ich finde es sehr positiv, dass Thorsten mir so einen Tip gibt. Denn jetzt, da ich das weiss, "sehe" ich die anderen Skripte der Distri. Oder gibt es noch weitere allgemeine Regeln für Skripte-Endungen? Viele Grüsse Joachim
* Joachim Kieferle schrieb am 16.Nov.2002:
Achim Hoffmann wrote:
On Sat, 16 Nov 2002, Thorsten Haude wrote:
Du solltest Deine Skripte nicht .scr nennen, das ist unüblich. Üblich is .sh.
Dass jemand so eine Regel (.sh) hat ist ja ok, ABER BITTE ERZAEHLT NIEMAND DASS SIE ES AUCH SO MACHEN MUESSEN, ZU MINDEST NICHT OEFFENTLICH. SO EIN QUATSCH, das ist nicht unueblich.
Schrei nicht so herum. .scr ist absolut unüblich. Es ist Sinnvoll, auch auf seinen HeimPC Übliches zu verwenden.
Denn jetzt, da ich das weiss, "sehe" ich die anderen Skripte der Distri.
Was was ist, kanst Du mit file herausfinden. file datei sagt Die was für eine Datei datei ist. file schaut dabei nicht auf dem Namen, insbesondere nicht auf die Endung, sondern guckt sich den Inhalt an.
Oder gibt es noch weitere allgemeine Regeln für Skripte-Endungen?
Normalerweise haben bei Linux ausführbare Programme gar keine Endungen. Auch nicht sh. Allerdings gibt es eine Regel die sich analog zu C und andere Compilersprachen verhält. Bei C ist es so daß die Quelle etwa foo.c heißt und das übersetzte Programm dann foo, also ohne Endung. Wenn ein foo.c existiert, dann übersetzt etwa make foo mit Hilfe des Compilers, etwa gcc, die Source foo.c in das ausführbare Programm foo Analog dazu macht ein make bar aus einem shellskript bar.sh das ausführbare shellskript bar auch hier ohne Endungen. Allerdings macht make hier nicht allzuviel. Es macht nur eine Kopie und macht dann noch ein chmod darauf, um es ausführbar zu machen. Ob man zu Shellskripte unbedingt Sourcen braucht ist die Frage. Normalerweise stehen Ausführbare Programme in /bin und /usr/bin, sie stehen ja auch im Pfad. Dort haben die allermeisten Programme keine Endungen. Aber viele, besonders in /usr/bin sind shellskripte. /usr/local/bin ist übrigens der Ort für Selbstgeschriebene Programme, die für das ganze System gelten, und ~/bin der Ort für selbstgeschriebene Programme, die man nur für sich selber geschrieben hat. Beide Verzeichnisse stehen auch im SuSE-Standardpfad. Allerdings sollten in beide Verzeichnisse nur fertige Befehle stehen und keine Versuche, Tests usw. Ach ja, nenne nie eine ausführbare Datei test, da es ein shellinternen Befehl test gibt. Bernd -- Bitte die Etikette beachten: http://www.suse-etikette.de.vu/etikette.html Bitte Realnamen angeben, kein Vollquoting, kein Html, PGP oder Visitenkarten benutzen. Signatur mit "-- " abtrennen, bei Antworten "Re: " voranstellen, sonst nichts. |Zufallssignatur 4
On Sat, 16 Nov 2002, Bernd Brodesser wrote:
Schrei nicht so herum.
wieso schreien? alle die nur klein schreiben fluestern doch auch nicht, oder? LOL (aber ich weis was du meinst, war volle Absicht:)
.scr ist absolut unüblich. Es ist Sinnvoll, auch auf seinen HeimPC Übliches zu verwenden.
IMHO voelliger Bloedsinn. :-( aber wenn es dich gluecklich(er) macht, bitte. Achim P.S. lest doch bitte meine Kommentare vom ersten bis zum Letzen Wort: in diesem Beispiel habe ich mich nicht ueber die Aussage bzgl .scr beschwert, sondern dass eine solche Aussage gleich zum Wohl der Menschheit definiert wird, das ist Quatsch dafuer ist suse-talk, oder
Achim Hoffmann wrote:
On Sat, 16 Nov 2002, Bernd Brodesser wrote:
Schrei nicht so herum.
wieso schreien? alle die nur klein schreiben fluestern doch auch nicht, oder?
LOL (aber ich weis was du meinst, war volle Absicht:)
.scr ist absolut unüblich. Es ist Sinnvoll, auch auf seinen HeimPC Übliches zu verwenden.
[ ... ] Hallo Leute, vielen Dank für Eure Infos, aber bitte macht den Thread nicht zum Flame-War. Ich denke, es gibt gewisse Konventionen, manchmal auch für eine Sache mehrere. Was ich jetzt gelernt habe ist, dass es für Skripte (die ich bisher aus einer anderen Gewohnheit mit .scr habe enden lassen) diverse Endungen oder auch Nicht-Endungen gibt. Und - was natürlich unter Linux besonders gilt - Namen sind "Schall und Rauch", es geht nur darum, etwas wieder zu erkennen. Was man mit einem "locate .sh" sieht ist, dass SuSE auch viele Skripte mit .sh enden lässt. D.h. ich werde mich wahrscheinlich künftig an deren Namenskonvention anlehnen (auch wenn es wie Bernd richtig schreibt gute Gründe gibt, die Skripte eben _nicht_ so zu benennen). Und wenn's dann wirklich keine richtigen Endungen gibt, vielleicht nenn' ich meine Dateien künftig am Ende .bat, weil dies bei einem anderen OS so genannt wird. ;-))) Schönen Samstag Joachim P.S. hat eigentlich niemand von Euch die Aufgabe, alle paar Wochen etliche Benutzer auf dem Server anlegen zu müssen und das entsprechend mit einem Skript automatisiert?
* Joachim Kieferle schrieb am 16.Nov.2002:
Und wenn's dann wirklich keine richtigen Endungen gibt, vielleicht nenn' ich meine Dateien künftig am Ende .bat, weil dies bei einem anderen OS so genannt wird. ;-)))
Beleidige jetzt nicht die bash, die kann viel, viel mehr als das Teil von DOS, selbst die gute alte Bourne-Shell konnte das schon, obwohl viel älter als DOS. Bernd -- Was ist quoten? Quoten ist das Zitieren aus einer mail, der man antwortet. Und wie macht man es richtig? Zitate werden mit "> " gekennzeichnet. Nicht mehr als nötig zitieren. Vor den Abschnitten das Zitat, auf das man sich bezieht, mit einer Zeile Abstand oben und unten. |Zufallssignatur 12
Hallo, On Sat, 16 Nov 2002, Joachim Kieferle wrote:
Was ich jetzt gelernt habe ist, dass es für Skripte (die ich bisher aus einer anderen Gewohnheit mit .scr habe enden lassen)
Also, .scr ist schlecht, das wird meist fuer Win* Screensaver (und diverse Viren) verwendet....
Und wenn's dann wirklich keine richtigen Endungen gibt, vielleicht nenn' ich meine Dateien künftig am Ende .bat, weil dies bei einem anderen OS so genannt wird. ;-)))
Auch das ist schlecht, das impliziert, dass das Teil fuer die DoS "command.com" ist... Nein, nimm lieber ".sh" oder ".(ba|k|t|c|z|a)sh" oder eben gar keine Dateiendung... -dnh -- Apparently giving caffeine to spiders makes them spin really bad webs, whereas giving them LSD makes them more uniform and better. Imagine what the WWW would have been like if it had been invented in the 60's -- Richard Letts in the Monastery
Moin,
* Achim Hoffmann
On Sat, 16 Nov 2002, Bernd Brodesser wrote:
.scr ist absolut unüblich. Es ist Sinnvoll, auch auf seinen HeimPC Übliches zu verwenden.
IMHO voelliger Bloedsinn. :-(
Ein Ansatz einer Begründung wäre nett.
lest doch bitte meine Kommentare vom ersten bis zum Letzen Wort: in diesem Beispiel habe ich mich nicht ueber die Aussage bzgl .scr beschwert, sondern dass eine solche Aussage gleich zum Wohl der Menschheit definiert wird, das ist Quatsch
Da steht (un)üblich. Behaupte nicht Dinge, die nicht stimmen, das macht keinen guten Eindruck. Thorsten -- The only thing necessary for the triumph of evil is for the good men to do nothing. - Edmund Burke
On Sat, 16 Nov 2002, Thorsten Haude wrote:
* Achim Hoffmann
[02-11-16 12:43]: On Sat, 16 Nov 2002, Bernd Brodesser wrote:
.scr ist absolut unüblich. Es ist Sinnvoll, auch auf seinen HeimPC Übliches zu verwenden.
IMHO voelliger Bloedsinn. :-(
Ein Ansatz einer Begründung wäre nett.
.scr ist **nicht** absolut unueblich. Fuer dich vielleicht, aber dann behalte es auch fuer dich, oder stelle eine Frage um dein Wissen zu erweitern, aber erklaer bitte nicht was **du** fuer ueblich haelst. Das ist der Bloedsinn.
lest doch bitte meine Kommentare vom ersten bis zum Letzen Wort: in diesem Beispiel habe ich mich nicht ueber die Aussage bzgl .scr beschwert, sondern dass eine solche Aussage gleich zum Wohl der Menschheit definiert wird, das ist Quatsch
Da steht (un)üblich. Behaupte nicht Dinge, die nicht stimmen, das macht keinen guten Eindruck.
Ich habe nichts behauptet, sondern **deine** Behauptung ("ueblich") in Frage gestellt. Leute, es ehrt euch wenn ihr schneller tippen als lesen koennt, aber schneller tippen als verstehen ist u.U. fatal ;-)
Nein, allgemeine Regeln gibt es unter Unix/Linux nicht. Namen sind Schall und Rauch.
Unfug. Es gibt so viele Gegenbeispiele, daß ich kaum weiß, wo ich anfangen soll. Was ist zB mit .c?
Oje, schon wieder so eine "ich kenne mich aus mit den Standards"-Behauptungen. Was soll das .c Beispiel? Jetzt sag nicht dass C-Source Files diese Extension haben muessen, weil sonst kein make mehr funktioniert, oder wiel es "ueblich" ist. Noch so ein Quatsch. Es dauert weniger als eine Minute aus .c .dasisteinfilemitkundrcsource zu machen, und alles funktioniert. Das gleiche gilt fuer .h . Aber jetzt driften wir noch weiter ab .. Und die Gegenbeispiele die eine Extension **vorschreiben** schickst du mir bitte per PM ... Ich habe mich nur darueber beschwert, dass "uebliche" Standards definiert werden wo es nichts Uebliches gibt. Diese Botschaft ist doch einfach: lasst solchen Unfug einfach, damit helft ihr niemand, im Gegenteil (Ausnahmen bestaetigen wie immer die Regel). Achim
* Achim Hoffmann schrieb am 16.Nov.2002:
.scr ist **nicht** absolut unueblich.
Wo gibt es das? Ich habe an verschiedene UNIXe gearbeitet, sowas aber noch nie gesehen.
Oje, schon wieder so eine "ich kenne mich aus mit den Standards"-Behauptungen. Was soll das .c Beispiel? Jetzt sag nicht dass C-Source Files diese Extension haben muessen, weil sonst kein make mehr funktioniert, oder wiel es "ueblich" ist. Noch so ein Quatsch. Es dauert weniger als eine Minute aus .c .dasisteinfilemitkundrcsource zu machen, und alles funktioniert.
Nein, tut es nicht: $ gcc foo.dasisteinfilemitkundrcsource -o foo /usr/i486-suse-linux/bin/ld:foo.dasisteinfilemitkundrcsource: file format not recognized; treating as linker script /usr/i486-suse-linux/bin/ld:foo.dasisteinfilemitkundrcsource:1: parse error collect2: ld returned 1 exit status $ make weiß aus dem Bauch heraus, wie es aus foo.c ein foo macht, dazu braucht es kein Makefile. Oder willst Du die Eingebauten Regeln von make verändern? Viel Vergnügen aber auch.
Das gleiche gilt fuer .h . Aber jetzt driften wir noch weiter ab .. Und die Gegenbeispiele die eine Extension **vorschreiben** schickst du mir bitte per PM ...
Ich habe mich nur darueber beschwert, dass "uebliche" Standards definiert werden wo es nichts Uebliches gibt.
Mit ist noch nichts anderes untergekommen. Auch nicht in Dokumentation anderer Unternehmen.
Diese Botschaft ist doch einfach: lasst solchen Unfug einfach, damit helft ihr niemand, im Gegenteil (Ausnahmen bestaetigen wie immer die Regel).
Findest Du es nicht sinnvoll, daß man sich an Konventionen hält? Es ist auch nicht zwingend, daß ausführbare Programme in /bin steht, oder Headerdateien in /usr/include. Kann man alles anders machen. Aber wieso? Bernd -- ROTFL = Rolling On The Floor, Laughing = Auf dem Boden wälzen, lachend. SCNR = Sorry, Could Not Resist = Sorry, Ich konte nicht wiederstehen. AFAIK = As Far As I Know = So weit ich weis|BTW = By The Way = Nebenbei bemerkt IMHO = In My Humble Opinion = meiner bescheidenen Meinung nach |Zufallssig. 9
On Sam, 16 Nov 2002 at 18:04 (+0100), Bernd Brodesser wrote:
* Achim Hoffmann schrieb am 16.Nov.2002:
.scr ist **nicht** absolut unueblich.
Wo gibt es das? Ich habe an verschiedene UNIXe gearbeitet, sowas aber noch nie gesehen.
Ich schon. Ein Kunde hat es so in _seinen_ Standards (sowas nennt man dann *Styleguides*) festgelegt - schwupps, schon war es üblich. Jan
On Sam, 16 Nov 2002 at 18:04 (+0100), Bernd Brodesser wrote: [...]
make weiß aus dem Bauch heraus, wie es aus foo.c ein foo macht, dazu braucht es kein Makefile. Oder willst Du die Eingebauten Regeln von make verändern? Viel Vergnügen aber auch.
Das machst Du doch in jedem Makefile. Was ist so schlimm daran? Ein make ohne Makefile ist ein gcc. [...]
Findest Du es nicht sinnvoll, daß man sich an Konventionen hält? Es ist auch nicht zwingend, daß ausführbare Programme in /bin steht, oder Headerdateien in /usr/include. Kann man alles anders machen. Aber wieso?
_Wo_ Dateien stehen und _wie_ sie heissen sind 2 Paar Schuhe. Der eine Schuh heisst FHS, der andere existiert nicht. Wir sollten froh sein, dass die M$-Unsitte, Dateien anhand ihrer Endung (wobei *Endung* sehr willkürlich als *die drei Zeichen nach dem Punkt* definiert wurden) zu identifizieren hier noch keinen Einzug gehalten hat. Man kann sich an verbreitete Sitten halten, aber doch bitte kein *das ist so üblich* draus machen! Jan
Moin,
* Jan Trippler
Man kann sich an verbreitete Sitten halten, aber doch bitte kein *das ist so üblich* draus machen!
Huh? Wo ist der Unterschied? Thorsten -- Politik kann man in diesem Lande definieren als die Durchsetzung wirtschaftlicher Zwecke mit Hilfe der Gesetzgebung. - Kurt Tucholsky
On Son, 17 Nov 2002 at 01:42 (+0100), Thorsten Haude wrote:
* Jan Trippler
[02-11-17 00:50]: Man kann sich an verbreitete Sitten halten, aber doch bitte kein *das ist so üblich* draus machen!
Huh? Wo ist der Unterschied?
Das eine ist freie Entscheidung, das andere Indoktrination. Ich verweise auf den Anfang des Threads. Jemandem klar machen zu wollen, dass Dateiendungen irgendwas mit der Funktion zu tun haben müssten ist IMHO Unsinn, weil damit die Denkweise aus den M$-Systemen gefördert wird. Die Systematik der Dateinamen sollte schlüssig sein - das heisst aber nicht unbedingt, dass sich das in den Endungen (also dem Teil nach dem letzten .) widerspiegeln muss. Jan
Moin,
* Jan Trippler
On Son, 17 Nov 2002 at 01:42 (+0100), Thorsten Haude wrote:
* Jan Trippler
[02-11-17 00:50]: Man kann sich an verbreitete Sitten halten, aber doch bitte kein *das ist so üblich* draus machen!
Huh? Wo ist der Unterschied?
Das eine ist freie Entscheidung, das andere Indoktrination.
Und... welches ist welches? Tut mir leid, ich sehe in diesem Zusammenhang keinen signifikanten, und ich habe mit solchen Dingen normalerweise keine Probleme.
Jemandem klar machen zu wollen, dass Dateiendungen irgendwas mit der Funktion zu tun haben müssten ist IMHO Unsinn
Du hättest sagen müssen: '...wäre IMHO Unsinn', denn das habe ich mit Sicherheit nicht getan. Thorsten -- Is there a suspect in your family? - Contact the Ministry of Information.
* Jan Trippler schrieb am 17.Nov.2002:
_Wo_ Dateien stehen und _wie_ sie heissen sind 2 Paar Schuhe. Der eine Schuh heisst FHS, der andere existiert nicht.
FHS ist auch kein Gesetz. Darf jeder mißachten, wie er Laune hat. Wenn das nicht möglich wäre, wäre es immer noch so, wie vor 20 Jahre, wo var und home in der usr enthalten war, und sbin in der etc.
Wir sollten froh sein, dass die M$-Unsitte, Dateien anhand ihrer Endung (wobei *Endung* sehr willkürlich als *die drei Zeichen nach dem Punkt* definiert wurden) zu identifizieren hier noch keinen Einzug gehalten hat.
Bei DOS war es keine Unsitte, sondern Bestandteil des OS, und sogar einigermaßen sinnig. Allerdings halte ich selbstverständlich das UNIX Verhalten für Vernünftiger.
Man kann sich an verbreitete Sitten halten, aber doch bitte kein *das ist so üblich* draus machen!
Was ist denn da der Unterschied? Wenn was Üblich ist, heißt das doch nicht, daß ich es nicht trotzdem nicht anders machen kann. Wie Du schon richtig andeutetest, gibt es bei Linux keine Endungen. Der Punkt ist ein ganz normales Zeichen in einem Dateinamen. Lediglich an erster Stelle hat er für bestimmte Programme, wie ls oder der shell, eine besondere Bedeutung. Aber es gibt Sachen, die haben sich nun mal eingebürgert. Und normalerweise haben ausführbare Programme bei Linux gar keine "Endung", oder sollte ich jetzt etwa /usr/bin/zgrep in /usr/bin/zgrep.scr umbenennen? Schließlich ist es auch ein Shellskript. Und viele, viele andere auch. Bernd -- Alle meine Signaturen sind rein zufällig und haben nichts mit dem Text oder dem Schreiber zu tun, dem ich antworte. Falls irgendwelche Unrichtigkeiten dabei sein sollten, so bedauere ich das. Es wäre nett, wenn Du mich benachrichtigen würdest. |Zufallssignatur 0
Moin,
* Achim Hoffmann
On Sat, 16 Nov 2002, Thorsten Haude wrote:
* Achim Hoffmann
[02-11-16 12:43]: On Sat, 16 Nov 2002, Bernd Brodesser wrote:
.scr ist absolut unüblich. Es ist Sinnvoll, auch auf seinen HeimPC Übliches zu verwenden.
IMHO voelliger Bloedsinn. :-(
Ein Ansatz einer Begründung wäre nett.
.scr ist **nicht** absolut unueblich.
Hier sehe ich .scr-Dateien: - Eine Datei, an der ich vorhin file(1) getestet habe. - Eine Menge Dateien für Tests an OpenMotif (keine Shellskripte) - SCR-Agent-Dateien für Yast2 (keine Shellskripte) - Teile der SCSI-Treiber (Assembler?) Hier sehe ich .sh-Dateien: - Mutt (Shellskript) - Apachetoolbox (Shellskript) - LDAP Browser (Shellskript) - Spam Assassin (Shellskript) - Kernel (Shellskript) - Apache (Shellskript) - Windowmaker (Shellskript) - Vim (Shellskript) - MPlayer (Shellskript) - Postfix (Shellskript) - Netcat (Shellskript) - htdig (Shellskript) - Diverse SuSE-Skripte (Shellskript) - Gnumeric (Shellskript) - Bonobo (Shellskript) - Nautilus (Shellskript) - OpenMotif (Shellskript) - Mozilla (Shellskript) - Xine (Shellskript) - PgWebInventory (Shellskript) - Gnocatan (Shellskript) - slrn (Shellskript) - Fli4l (Shellskript) - GKrellM (Shellskript) - Cervisia (Shellskript) - Bots'n'Scouts (Shellskript) - Samba (Shellskript) - Xlt (Shellskript) - LessTif (Shellskript) - Expander (Shellskript) - phpPgAdmin (Shellskript) - phpMyAdmin (Shellskript) - Diverse selbstgeschreibene Shellskripte Angesichts dieser Daten läßt sich deutlich erkennen, daß Deine Äußerungen schlicht ahnungslos sind.
Fuer dich vielleicht, aber dann behalte es auch fuer dich, oder stelle eine Frage um dein Wissen zu erweitern, aber erklaer bitte nicht was **du** fuer ueblich haelst. Das ist der Bloedsinn.
Deine Formulierungen gehen mir zunehmend auf den Geist. Ich habe nur geschrieben, was ich für üblich halte, Du nennst es "Quatsch" und "völligen Blödsinn", was ich mangels geringster Anzeichen von Substanz für recht unverschämt halte.
lest doch bitte meine Kommentare vom ersten bis zum Letzen Wort: in diesem Beispiel habe ich mich nicht ueber die Aussage bzgl .scr beschwert, sondern dass eine solche Aussage gleich zum Wohl der Menschheit definiert wird, das ist Quatsch
Da steht (un)üblich. Behaupte nicht Dinge, die nicht stimmen, das macht keinen guten Eindruck.
Ich habe nichts behauptet, sondern **deine** Behauptung ("ueblich") in Frage gestellt.
Du hast in Frage gestellt, daß ich das Wohl der Menschheit definiert habe, und daß ich gesagt hätte, wie man seine Shellskripte nennen *müßte*. Beides falsch.
Leute, es ehrt euch wenn ihr schneller tippen als lesen koennt, aber schneller tippen als verstehen ist u.U. fatal ;-)
Ich find's interessant, daß Du so schnell tippst, daß Du nichtmal Deine eigenen Texte lesen kannst.
Nein, allgemeine Regeln gibt es unter Unix/Linux nicht. Namen sind Schall und Rauch.
Unfug. Es gibt so viele Gegenbeispiele, daß ich kaum weiß, wo ich anfangen soll. Was ist zB mit .c?
Oje, schon wieder so eine "ich kenne mich aus mit den Standards"-Behauptungen. Was soll das .c Beispiel? Jetzt sag nicht dass C-Source Files diese Extension haben muessen, weil sonst kein make mehr funktioniert, oder wiel es "ueblich" ist. Noch so ein Quatsch.
Dazu fällt mir nichts mehr ein. Klar ist jedenfalls, daß Du Deine Brötchen nicht mit Programmierung verdienst.
Ich habe mich nur darueber beschwert, dass "uebliche" Standards definiert werden wo es nichts Uebliches gibt.
Das glaube ich. Allerdings habe ich das Wort Standard nicht in den Mund genommen, üblich ist es allemal.
Diese Botschaft ist doch einfach: lasst solchen Unfug einfach, damit helft ihr niemand, im Gegenteil (Ausnahmen bestaetigen wie immer die Regel).
Es macht es immerhin einfacher, Shellskripte zu finden. Auf diesem Rechner in einem Verhältnis von 463:0. Thorsten -- Das Briefgeheimnis sowie das Post- und Fernmeldegeheimnis sind unverletzlich. - Grundgesetz, Artikel 10, Abs. 1
Du solltest Deine Skripte nicht .scr nennen, das ist unüblich. Üblich is .sh.
Dass jemand so eine Regel (.sh) hat ist ja ok, ABER BITTE ERZAEHLT NIEMAND DASS SIE ES AUCH SO MACHEN MUESSEN, ZU MINDEST NICHT OEFFENTLICH. SO EIN QUATSCH, das ist nicht unueblich.
grr :-(( Achim
Hallo Achim,
nichts für ungut, aber ich finde es sehr positiv, dass Thorsten mir so einen Tip gibt.
IMHO ist der Tip in dieser Form wertlos. Er verwirrt mehr als er bringt, weil er vom eigentlich Problem derm Script ablenkt. Und mit dem Script hat er gar nichts zu tun.
Denn jetzt, da ich das weiss, "sehe" ich die anderen Skripte der Distri.
Oder gibt es noch weitere allgemeine Regeln für Skripte-Endungen?
Nein, allgemeine Regeln gibt es unter Unix/Linux nicht. Namen sind Schall und Rauch. Zum Glueck, oder leider, wie du willst. Wenn man etwas Komfort will dann setzt man das x-bit, noch mehr Komfort gibt es wenn man als erste Zeile eine hashbang mit Pfad zu einem Interpreter hat. Man kann allenfalls sagen, dass sich bestimmte Extensions eingebuergert haben, z.B. .pl fuer perl, .tcl fuer Tcl/Tk usw. Aber auch .cgi fuer perl oder shell oder ein Binary ! Eine bash .sh zu nennen ist in diesem Beisiel ausserdem noch sehr verwirrend, weil i.d.R. ein Bash-Script mit einer Bourne-Shell nicht laeuft. Also wenn dann bitte .bash (auch wenn sich da kaum jemand dran haelt). Umgekehrt laeuft jedes Bourne-Shell Script mit bash oder ksh. Ist das jetzt ausreichend (nicht vollstaendig) erklaert? Achim
Moin,
* Achim Hoffmann
Du solltest Deine Skripte nicht .scr nennen, das ist unüblich. Üblich is .sh.
IMHO ist der Tip in dieser Form wertlos. Er verwirrt mehr als er bringt, weil er vom eigentlich Problem derm Script ablenkt. Und mit dem Script hat er gar nichts zu tun.
Bist Du irgendwann mal von einer Frau verlassen worden, weil Du einem Skript einen falschen Namen gegeben hast? Ich habe nur einen Hinweis auf übliche Konventionen gegeben, verbunden mit dem Rat, diese einzuhalten. Ich behaupte nach wie vor, daß das ein nützlicher Rat ist. Verwirrt bist nur Du, Joachim hat mich verstanden. Mit dem konkreten Skript hat das tatsächlich nur peripher zu tun, aber das kann wohl kaum ein Grund sein, es zu verschweigen.
Oder gibt es noch weitere allgemeine Regeln für Skripte-Endungen?
Nein, allgemeine Regeln gibt es unter Unix/Linux nicht. Namen sind Schall und Rauch.
Unfug. Es gibt so viele Gegenbeispiele, daß ich kaum weiß, wo ich anfangen soll. Was ist zB mit .c?
Man kann allenfalls sagen, dass sich bestimmte Extensions eingebuergert haben, z.B. .pl fuer perl, .tcl fuer Tcl/Tk usw.
Also doch?
Aber auch .cgi fuer perl oder shell oder ein Binary !
Das eben dann aber auch nur in einer bestimmten Situation.
Eine bash .sh zu nennen ist in diesem Beisiel ausserdem noch sehr verwirrend, weil i.d.R. ein Bash-Script mit einer Bourne-Shell nicht laeuft. Also wenn dann bitte .bash (auch wenn sich da kaum jemand dran haelt).
Stimmt, die Lösung sollte aber sein, ein sh-Skript daraus zu machen. Denn:
Umgekehrt laeuft jedes Bourne-Shell Script mit bash oder ksh.
Thorsten -- The history of Liberty is a history of the limitation of government power. - Woodrow Wilson
Moin,
* Achim Hoffmann
On Sat, 16 Nov 2002, Thorsten Haude wrote:
Du solltest Deine Skripte nicht .scr nennen, das ist unüblich. Üblich is .sh.
Dass jemand so eine Regel (.sh) hat ist ja ok, ABER BITTE ERZAEHLT NIEMAND DASS SIE ES AUCH SO MACHEN MUESSEN, ZU MINDEST NICHT OEFFENTLICH. SO EIN QUATSCH, das ist nicht unueblich.
Kein Grund, gleich 'rumzuschreien. Ich sagte nicht, daß er es machen muß. Ich kann mich allerdings nur an Shellskripte ohne Endung oder mit der Endung .sh erinnern. Probier mal aus, wie das auf Deinem System aussieht: find / -type f -exec file {} \; 2>/dev/null | grep 'shell script text' | grep -Ev '(~|bck):' | awk -F: '{print $1}' | awk -F/ '{print $2}' | grep '\.' | grep -v '\.sh' (Was für ein Ungetüm. David könnte das bestimmt mit 30 Zeichen.) Thorsten -- Anyone who is capable of getting themselves made President should on no account be allowed to do the job. - The Book
Hallo, On Sat, 16 Nov 2002, Thorsten Haude wrote:
Probier mal aus, wie das auf Deinem System aussieht: find / -type f -exec file {} \; 2>/dev/null | grep 'shell script text' | grep -Ev '(~|bck):' | awk -F: '{print $1}' | awk -F/ '{print $2}' | grep '\.' | grep -v '\.sh'
(Was für ein Ungetüm. David könnte das bestimmt mit 30 Zeichen.)
Ma kuckn ;)
Also, auf jeden Fall kann man den ganze Kram ab dem ersten 'grep'
zusammenfassen... Wenn man schon ein awk anwirft... ;)
Erstmal: Was soll das 'bck' sein? [1]
Aaaalso ;)
Zurueck zum Thema...
Setzen wir mal ne Pipe voraus, aus der folgendes Zeilenweise
eintrudelt (z.B. via obigem find oder z.B. einem locate | xargs file
o.ae.):
<Dateiname>:
Moin,
* David Haller
Hallo,
On Sat, 16 Nov 2002, Thorsten Haude wrote:
Probier mal aus, wie das auf Deinem System aussieht: find / -type f -exec file {} \; 2>/dev/null | grep 'shell script text' | grep -Ev '(~|bck):' | awk -F: '{print $1}' | awk -F/ '{print $2}' | grep '\.' | grep -v '\.sh'
(Was für ein Ungetüm. David könnte das bestimmt mit 30 Zeichen.)
Ma kuckn ;)
Also, auf jeden Fall kann man den ganze Kram ab dem ersten 'grep' zusammenfassen... Wenn man schon ein awk anwirft... ;)
Jaaa, mit dem Ding konnte ich aber noch nie umgehen.
Erstmal: Was soll das 'bck' sein? [1]
Das sind NEdit's Backupdateien.
1: | grep 'shell script text' ### nur zeilen in denen 'shell script text' vorkommt 2: | grep -Ev '(~|bck):' ### wo der Dateiname aber weder '~' noch 'bck' am Ende enthaelt 3: | awk -F: '{print $1}' ### den Dateinamen dieser Dateien 4: | awk -F/ '{print $2}' ### hae? Was soll das bringen? Damit bekommst du ne Liste wie: ### /, /home /usr etc.... Das ist also Schwachfug... Wolltest du ### sowas wie 'basename'?
Genau, basename(1). Meine Lösung ist quasi hysterisch gewachsen.
5: | grep '\.' ### je nun, jetzt filtert er aus den Verzeichnissen direkt unter / ### noch welche aus, die einen '.' enthalten... (vermutlich waren ### Dateinamen(!) gemeint, die einen '.' enthalten
Genau, Dateinamen mit Punkt. Klappt auch so.
6: | grep -v '\.sh' ### ah, und davon dann die, die _nicht auf '.sh' enden...
...aber eine Endung haben!
Ok, mal angenommen, ich habe die Intention des obigen Gewuerges richtig verstanden, dann wuerde ich sowas verwenden:
==== awk -F':' ' !/~|bak|bck/ && /:.*shell script text/ && /.*\/[^/]*\.[^/]*/ && !/\.sh/ { print $1; }' ====
*muahahaha*
Sind 29 Zeichen!!!
David, Du bist mein Held!
Wichtiger als die Zeichenzahl ist aber: Ich verwende nur ein(!) awk anstelle von 4 'grep's und 2 'awk's...
Schon klar. Ich würde sowas auch nicht auf Platte speichern, dazu gibt's Perl.
Auch das mit dem find laesst sich verbessern:
Finde ich nicht besser. Gerade Shellskripte liegen nicht unbedingt im Pfad, sondern wo sie eben gerade passen. Thorsten -- Anyone who is capable of getting themselves made President should on no account be allowed to do the job. - The Book
* Thorsten Haude schrieb am 17.Nov.2002:
* David Haller
[02-11-17 00:56]: On Sat, 16 Nov 2002, Thorsten Haude wrote:
find / -type f -exec file {} \; 2>/dev/null | grep 'shell script text' | grep -Ev '(~|bck):' | awk -F: '{print $1}' | awk -F/ '{print $2}' | grep '\.' | grep -v '\.sh'
Auch das mit dem find laesst sich verbessern:
Finde ich nicht besser. Gerade Shellskripte liegen nicht unbedingt im Pfad, sondern wo sie eben gerade passen.
Zumindest -type f ist überflüssig, da bei andere Dateitypen file mit Sicherheit nicht "shell script text" ausgibt. Eine Fehlermeldung kann es nur geben, wenn find was nicht öffnen kann. Wenn man es als root ausführt, ist auch die Umlenkung nach /dev/null überflüssig. Eine Fehlermeldung wird sowieso nicht durchgepiped. Bernd -- Bitte die Etikette beachten: http://www.suse-etikette.de.vu/etikette.html Bitte Realnamen angeben, kein Vollquoting, kein Html, PGP oder Visitenkarten benutzen. Signatur mit "-- " abtrennen, bei Antworten "Re: " voranstellen, sonst nichts. |Zufallssignatur 4
Moin,
* Bernd Brodesser
* Thorsten Haude schrieb am 17.Nov.2002:
* David Haller
[02-11-17 00:56]: On Sat, 16 Nov 2002, Thorsten Haude wrote:
find / -type f -exec file {} \; 2>/dev/null | grep 'shell script text' | grep -Ev '(~|bck):' | awk -F: '{print $1}' | awk -F/ '{print $2}' | grep '\.' | grep -v '\.sh'
Auch das mit dem find laesst sich verbessern:
Finde ich nicht besser. Gerade Shellskripte liegen nicht unbedingt im Pfad, sondern wo sie eben gerade passen.
Zumindest -type f ist überflüssig, da bei andere Dateitypen file mit Sicherheit nicht "shell script text" ausgibt.
Stimmt, das bin ich so gewohnt, weil andere Befehle zu oft an Fifos hängenbleiben.
Eine Fehlermeldung kann es nur geben, wenn find was nicht öffnen kann. Wenn man es als root ausführt, ist auch die Umlenkung nach /dev/null überflüssig.
Tja, als braver User bin ich nur root, wenn es nicht anders geht.
Eine Fehlermeldung wird sowieso nicht durchgepiped.
Stört aber die Ausgabe. Thorsten -- Necessity is the plea for every infringement of human freedom. It is the argument of tyrants; it is the creed of slaves. - William Pitt
On Sam, 16 Nov 2002 at 01:12 (+0100), Thorsten Haude wrote:
Moin,
* Joachim Kieferle
[02-11-16 00:49]: Allerdings wird dann _nicht_ zuerst (user1 angelegt + Account-Infomail erzeugt), als nächstes (user2 ....), sondern es werden zuerst alle Accounts angelegt, dann die nächste Aktion gestartet und zum Schluss bekomme ich eine Mail auf der zuerst _alle_ Vornamen, dann _alle_ Nachnamen, ... stehen - sprich die kann ich so nicht verwenden.
- - - Schnipp - - - for user (`cat userdaten.csv`) do Mach mir den User done - - - Schnapp - - -
Thorsten, entweder Du schreibst *ungetestet* drüber oder Du passt besser auf die Syntax auf (und komm mir nicht wieder mit *bah, deshalb mag ich Shell Scripts nicht*)! jan@k500:~/tmp> for user (`cat userdaten.csv`) bash: syntax error near unexpected token `(`' for user in `cat userdaten.csv`; do befehl_1 $user befehl_2 $user ... done [...]
Du solltest Deine Skripte nicht .scr nennen, das ist unüblich. Üblich is .sh.
Sagt wer? Jan
Moin,
* Jan Trippler
On Sam, 16 Nov 2002 at 01:12 (+0100), Thorsten Haude wrote:
- - - Schnipp - - - for user (`cat userdaten.csv`) do Mach mir den User done - - - Schnapp - - -
Thorsten, entweder Du schreibst *ungetestet* drüber oder Du passt besser auf die Syntax auf (und komm mir nicht wieder mit *bah, deshalb mag ich Shell Scripts nicht*)!
Jan, habe ich Dir etwas angetan? Ja, ich hätte es dazuschreiben, besser noch testen sollen.
Du solltest Deine Skripte nicht .scr nennen, das ist unüblich. Üblich is .sh.
Sagt wer?
Sagt jeder. Sieh auf Deiner Festplatte nach. Lies die Mail, in der ich Details gepostet habe. Ich habe keine Lust, hier zu diskutieren, ob die Erde eine Scheibe ist. Thorsten -- There's no such thing as a stupid question. Only stupid people. - User Friendly
On Son, 17 Nov 2002 at 01:46 (+0100), Thorsten Haude wrote:
* Jan Trippler
[02-11-17 00:40]: On Sam, 16 Nov 2002 at 01:12 (+0100), Thorsten Haude wrote:
- - - Schnipp - - - for user (`cat userdaten.csv`) do Mach mir den User done - - - Schnapp - - -
Thorsten, entweder Du schreibst *ungetestet* drüber oder Du passt besser auf die Syntax auf (und komm mir nicht wieder mit *bah, deshalb mag ich Shell Scripts nicht*)!
Jan, habe ich Dir etwas angetan? [...]
Nein, ich mag es nur nicht (frag Achim H. ;-), wenn falsche Tipps in die Menge gestreut werden. Entweder man testet sie, oder man macht den potenziellen Nachahmungstäter darauf aufmerksam, dass es sich um eine vage Idee handelt, nicht um eine Lösung.
Du solltest Deine Skripte nicht .scr nennen, das ist unüblich. Üblich is .sh.
Sagt wer?
Sagt jeder. Sieh auf Deiner Festplatte nach. Lies die Mail, in der ich Details gepostet habe. Ich habe keine Lust, hier zu diskutieren, ob die Erde eine Scheibe ist.
Das eine hat mit dem anderen nichts zu tun. Ich habe die Diskussion verfolgt. Deshalb frage ich. Du diskutierst nicht darüber, ob die Erde eine Scheibe ist, sondern darüber, ob Deine Definition einer Scheibe zutrifft. Deine Art der Diskussionsführung ist IMHO etwas merkwürdig. Jan P.S.: Es gibt nur 2 unverrückbare Erkenntnisse im Leben: 1. Der Computer hilft dem Menschen. 2. Die Erde ist eine Scheibe. (Murphys Gesetze)
Moin,
* Jan Trippler
On Son, 17 Nov 2002 at 01:46 (+0100), Thorsten Haude wrote:
Jan, habe ich Dir etwas angetan? [...]
Nein, ich mag es nur nicht (frag Achim H. ;-), wenn falsche Tipps in die Menge gestreut werden. Entweder man testet sie, oder man macht den potenziellen Nachahmungstäter darauf aufmerksam, dass es sich um eine vage Idee handelt, nicht um eine Lösung.
Ach so. Na, dann sind wir ja einer Meinung, wie man an dem nicht zitierten Teil gesehen hätte.
Du solltest Deine Skripte nicht .scr nennen, das ist unüblich. Üblich is .sh.
Sagt wer?
Sagt jeder. Sieh auf Deiner Festplatte nach. Lies die Mail, in der ich Details gepostet habe. Ich habe keine Lust, hier zu diskutieren, ob die Erde eine Scheibe ist.
Das eine hat mit dem anderen nichts zu tun. Ich habe die Diskussion verfolgt. Deshalb frage ich. Du diskutierst nicht darüber, ob die Erde eine Scheibe ist, sondern darüber, ob Deine Definition einer Scheibe zutrifft.
Nein, ich habe sogar Zahlen genannt, warum ich den Begriff 'üblich' (und nicht etwa 'vorgeschrieben' oder 'einzig richtig') verwendet habe. Bei einem Verhältnis von 463 zu 0 kann man allemal von 'üblich' sprechen.
Deine Art der Diskussionsführung ist IMHO etwas merkwürdig.
Das passiert immer, wenn mir Leute Dinge in den Mund legen, die ich nie gesagt habe. Thorsten -- Denn ein Tyrann ist nicht, wenn die Masse nicht geduldig stillhält. - Kurt Tucholsky
Moin, Thorsten Haude:
Du solltest Deine Skripte nicht .scr nennen, das ist unüblich. Üblich is .sh.
Jan Trippler:
Sagt wer?
Ich. :-) Leute, soviel Wind... wenn man sich das Leben einfach und sicher machen kann, dann sollte man das auch tun. Nein, es steht nirgendwo geschrieben, daß Extensions bindend sind. Aber unterm Strich läuft's besser, wenn man sich an bestimmte Gepflogenheiten hält: Komische Zeichen in Dateinamen unterlassen, ebendort Sparsam mit GroßKleinSchreibung umgehen,... Kann einem alles mal den Feierabend retten. Als Anwender mehrerer Betriebssysteme versuche ich, möglichst gefahrlos durchzukommen. Beispielsweise entwickle ich Linux-Script auf einem Macintosh, weil alle mir bekannten Linux-Texteditoren für mich inakzeptabel sind. Und wenn ich meine Scripte beispielsweise per ftp auf den Webserver lege, dann entscheidet der Mac aufgrund von Extensions über ASCII- oder BINARY-Transfer. Obwohl auch Macs keine Dateiendungen brauchen. Übrigens, ich gebe zu bedenken, daß "file" keine ultimative Lösung ist. Es _versucht_ einen Dateityp am Kopf zu erkennen, aber weder muß es damit erfolg haben, noch muß die Datei eindeutig sein, noch muß auf meinem System das gleiche herauskommen wie auf einem anderen. Beispiel: ------ echo "Hallo"; ------ 'file' über diese Datei ergibt bei mir: "ASCII Text". Nett. Und nicht falsch. Könnte aber auch php sein. Oder bash. Oder ... Auch wenn's dem Rechner egal ist, dem Menschen hilft es weiter. Gruß, Ratti -- http://www.gesindel.de - Fontlinge - Die Fontverwaltung fuer Linux Fontmanagement for Linux
userdaten.csv: ---------------------------- Vorname:Name:Login:Passwort:MatrNr:Expires:Angelegt:Gruppe1:Gruppe2:Gruppe3 John:Mueller:jmueller:YF2uxV2b:231932:20030330:20021113:ws02gcd3:: ....
useranlegen-vorbereiten.scr: ---------------------------- #!/bin/bash awk -F':' '{print "useradd -c "$1"_"$2" -d /export/home/1/"$3" -e "$6" -G "$8" -m -s /bin/false "$3;}' /verwaltung/userdaten.csv > /verwaltung/useranlegen.scr # awk -F':' '{print "smbpasswd -a "$3" "$4;}' /verwaltung/userdaten.csv >> /verwaltung/useranlegen.scr # awk -F':' '{print "Vorname: "$1}' /verwaltung/userdaten.csv > /verwaltung/useranlegen.tmp awk -F':' '{print "Nachname: "$2}' /verwaltung/userdaten.csv >> /verwaltung/useranlegen.tmp awk -F':' '{print "Login: "$3}' /verwaltung/userdaten.csv >> /verwaltung/useranlegen.tmp awk -F':' '{print "Passwort: "$4}' /verwaltung/userdaten.csv >> /verwaltung/useranlegen.tmp # mail -s Neue_Accounts root < /verwaltung/useranlegen.tmp [ ... ]
und das erzeugt
useranlegen.scr ---------------------------- useradd -c Vorname_Nachname -d /export/home/1/Login -e 20030330 -G Gruppe1 -m -s /bin/false Login useradd -c John_Mueller -d /export/home/1/jmueller -e 20030330 -G ws02gcd3 -m -s /bin/false jmueller smbpasswd -a Login Passwort smbpasswd -a jmueller YF2uxV2b ....
Und die Mail: ---------------------------- Vorname: Vorname Vorname: John Nachname: Nachname Nachname: Mueller Login: Login Login: jmueller Passwort: Passwort Passwort: YF2uxV2b
#! /bin/bash awk -F: ' { print "useradd -c "$1"_"$2" -d /export/home/1/"$3" -e "$6" -G "$8" -m -s /bin/false "$3; print "smbpasswd -a "$3" "$4; print "Vorname: "$1 >>"/verwaltung/userdaten.csv"; print "Nachname: "$2 >>"/verwaltung/userdaten.csv"; print "Login: "$3 >>"/verwaltung/userdaten.csv"; print "Passwort: "$4 >>"/verwaltung/userdaten.csv"; }' userdaten.csv Aufruf des Scripts, zum Testen: useranlegen.scr .. und zum Ausfuehren: useranlegen.scr|sh (funktioniert nur mit nawk, gawk, was unter Linux Standard ist). Achim
Joachim Kieferle wrote:
Hallo Liste,
irgendwie komme ich trotz diverser Anleitungen nicht weiter. Aber vielleicht hat jemand von Euch einen Tip:
Da ich viele User auf dem Server habe, lege ich die jeweils mit einem sehr einfachen Skript an. Dazu habe ich
[ ... ] Hallo Leute, habe jetzt mein Skript fertig und poste es, da sicher die/der ein- oder andere mal über dieses Problem stolpern wird. Die Daten für die neue/n Benutzer/innen generiere ich aus einer Filemaker-Datenbank, da ich die gleich noch für etwas anderes benötige. Wegen der Lesbarkeit habe ich das Skript bei den Infos für die User etwas reduziert. Pro Account schicke ich dann eine Mail an root (um genauer zu sein, an das Alias) und drucke dann jeweils eine Mailseite / User aus. Den Namen des Skriptes sage ich lieber nicht, sonst gibt's gleich wieder einen Flamewar ;-)). Anregungen / Verbesserungstips sind natürlich gerne willkommen. Danke für Eure Unterstützung, schönen Sonntag Joachim ++++++++++++++++++ Skript ohne Namen ;-)) ++++++++++++++++++++ #! /bin/sh # Reihenfolge der Eintraege in "userdaten.csv" # 1= Vornmae # 2= Nachname # 3= MatrNr # 4= Login # 5= Passwort # 6= gueltig_bis # 7= quota # 8= Gruppen # 9= private_E-mail # 10= lfd_Nr # 11= angelegt_am # 12= drucken # 13= ws02pr4_betreuer # ---- evtl. vorhandene Files loeschen --- rm -f /root/verwaltung/user/2-user-vorhanden.sh rm -f /root/verwaltung/user/3-richtig-anlegen.sh rm -f /root/verwaltung/user/temp1 rm -f /root/verwaltung/user/temp-mail # --- userdaten.csv vorbereiten (aus Datenbank generiert) und zum Ausdrucken # ----nach Nachname sortieren --- sed s/'","'/:/g /root/verwaltung/user/userdaten.csv > /root/verwaltung/user/userdaten.csv.bak sed s/'"'//g /root/verwaltung/user/userdaten.csv.bak > /root/verwaltung/user/userdaten.csv sort -t: -k2 -o /root/verwaltung/user/userdaten.csv /root/verwaltung/user/userdaten.csv rm -f /root/verwaltung/user/userdaten.csv.bak # ---- User anlegen vorbereiten --- awk -F: ' { print "useradd -c \""$1" "$2"\" -d /export/home/1/"$4" -e "$6" -G "$8" -m -s /bin/false "$4 print "smbpasswd -a "$4" "$5 print "setquota "$4" "$7" "$7" 0 0 -a" }' /root/verwaltung/user/userdaten.csv >> /root/verwaltung/user/3-richtig-anlegen.sh chmod 700 /root/verwaltung/user/3-richtig-anlegen.sh # ---- einfaches Skript, ob user vorhanden vorbereiten --- awk -F: ' { print "finger "$4 "| grep Login" }' /root/verwaltung/user/userdaten.csv >> /root/verwaltung/user/2-user-vorhanden.sh chmod 700 /root/verwaltung/user/2-user-vorhanden.sh # --- 1 Mail pro Account erzeugen --- for user in `cat /root/verwaltung/user/userdaten.csv`; do echo $user > /root/verwaltung/user/temp1 awk -F: ' { print "Vorname: "$1 print "Nachname: "$2 print "Matr. Nr.: "$3 print "------------------------" print "Login: "$4 print "Passwort: "$5 print "------------------------" print "gueltig bis: "$6 print "Gruppen: "$8 print "" print "" print "" print "-------- BITTE BEACHTEN SIE -------" print "" print "Wenn Sie dieses Datenblatt erhalten, ändern Sie bitte UMGEHEND" print "Ihr Passwort." print "... und hier noch jede Menge Info" }' /root/verwaltung/user/temp1 > /root/verwaltung/user/temp-mail # Mail pro User verschicken, sleep damit die alphabet. Reihenfolge stimmt. nachname=`awk -F: '{print $2}' /root/verwaltung/user/temp1` vorname=`awk -F: '{print $1}' /root/verwaltung/user/temp1` sleep 1 mail -s "Account fuer $nachname, $vorname angelegt" root < /root/verwaltung/user/temp-mail done rm -f /root/verwaltung/user/temp1 rm -f /root/verwaltung/user/temp-mail echo echo echo Bitte mit 2-user-vorhanden.sh pruefen, echo ob die User nicht schon anngelegt sind und echo echo mit 3-richtig-anlegen.sh die Accounts einrichten.
Hallo Joachim, ich habe früher mit TeX auch Serienbriefe geschrieben, in dem ich in meinem MasterScript (Geschrieben mit LyX) alle zu ersetzenden Felder z.B. mit Großbuchstaben geschreiben habe. Danach habe ich aus der Adressbuchliste heraus eine einzelne Steuerdatei erstellt und mit dem sed alle Großbuchstabenwörter ersetzt. Der sed verwendet die vi-Syntax. Zumindest habe ich so meine Serienbriefe sauber schreiben können... Aber mittlerweile gibts ja OpenOffice, da würde ich vielleicht die Files mit serienbrieffunktion in .txt abspeichern. (Ich hab meine Spontanidee gerade mal ausprobiert und es klappt! Das haut mich ja vom Hocker...) Wenn's jemanden interessiert, kann ich ja mal zu Hause nach diesem Script schauen. (Mit dem Office ists noch jecker!) Gruß, Dirk Joachim Kieferle wrote:
Hallo Liste,
irgendwie komme ich trotz diverser Anleitungen nicht weiter. Aber vielleicht hat jemand von Euch einen Tip:
Da ich viele User auf dem Server habe, lege ich die jeweils mit einem sehr einfachen Skript an. Dazu habe ich - ein CSV-File (userdaten.csv) mit den Daten sowie - ein Skript-File (useranlegen-vorbereiten.scr), das - ein weiteres Skript-File (useranlegen.scr) erzeugt, das ich um keine Fehler im ersten Skript abfangen zu müssen kurz nochmal im Texteditor anschaue.
Allerdings wird dann _nicht_ zuerst (user1 angelegt + Account-Infomail erzeugt), als nächstes (user2 ....), sondern es werden zuerst alle Accounts angelegt, dann die nächste Aktion gestartet und zum Schluss bekomme ich eine Mail auf der zuerst _alle_ Vornamen, dann _alle_ Nachnamen, ... stehen - sprich die kann ich so nicht verwenden.
D.h. ich bräuchte irgend ein Stück Skript, das mir eine Zeile aus "userdaten.csv" einliest, komplett in "useranlegen-vorbereiten.scr" durcharbeitet und dann die nächste Zeile aus "userdaten.csv" abarbeitet, die nächste, ... bis die Datei fertig ist.
Was tun?
Viele Grüsse
Joachim
Hier ein Auszug aus den Skripten:
userdaten.csv: ---------------------------- Vorname:Name:Login:Passwort:MatrNr:Expires:Angelegt:Gruppe1:Gruppe2:Gruppe3 John:Mueller:jmueller:YF2uxV2b:231932:20030330:20021113:ws02gcd3:: ....
useranlegen-vorbereiten.scr: ---------------------------- #!/bin/bash awk -F':' '{print "useradd -c "$1"_"$2" -d /export/home/1/"$3" -e "$6" -G "$8" -m -s /bin/false "$3;}' /verwaltung/userdaten.csv > /verwaltung/useranlegen.scr # awk -F':' '{print "smbpasswd -a "$3" "$4;}' /verwaltung/userdaten.csv >> /verwaltung/useranlegen.scr # awk -F':' '{print "Vorname: "$1}' /verwaltung/userdaten.csv > /verwaltung/useranlegen.tmp awk -F':' '{print "Nachname: "$2}' /verwaltung/userdaten.csv >> /verwaltung/useranlegen.tmp awk -F':' '{print "Login: "$3}' /verwaltung/userdaten.csv >> /verwaltung/useranlegen.tmp awk -F':' '{print "Passwort: "$4}' /verwaltung/userdaten.csv >> /verwaltung/useranlegen.tmp # mail -s Neue_Accounts root < /verwaltung/useranlegen.tmp [ ... ]
und das erzeugt
useranlegen.scr ---------------------------- useradd -c Vorname_Nachname -d /export/home/1/Login -e 20030330 -G Gruppe1 -m -s /bin/false Login useradd -c John_Mueller -d /export/home/1/jmueller -e 20030330 -G ws02gcd3 -m -s /bin/false jmueller smbpasswd -a Login Passwort smbpasswd -a jmueller YF2uxV2b ....
Und die Mail: ---------------------------- Vorname: Vorname Vorname: John Nachname: Nachname Nachname: Mueller Login: Login Login: jmueller Passwort: Passwort Passwort: YF2uxV2b
Dirk Gerlach wrote:
Hallo Joachim,
ich habe früher mit TeX auch Serienbriefe geschrieben, in dem ich in meinem MasterScript (Geschrieben mit LyX) alle zu ersetzenden Felder z.B. mit Großbuchstaben geschreiben habe.
[ ... ]
(Ich hab meine Spontanidee gerade mal ausprobiert und es klappt! Das haut mich ja vom Hocker...)
Wenn's jemanden interessiert, kann ich ja mal zu Hause nach diesem Script schauen. (Mit dem Office ists noch jecker!)
[ ... ] Hallo Dirk, traue es mich fast nicht zuzugeben ;-)), aber ich habe bisher mit MS-Word diese Datei erstellt. Dank Unterstützung der Liste und intensivem Ausprobieren habe ich jetzt eine funktionierende, ein rein Skript-basierendes Verfahren. D.h. ich habe nur eine CSV-Datei, und ein Skript das mir das alles erledigt. Deshalb brauche ich Dein Skript nicht mehr, aber trotzdem vielen Dank für die Hilfe. Was ich aber auch gesehen habe ist, dass es andere Leute interessiert, deshalb fände ich es sehr gut, wenn Du es posten würdest. Vielen Dank + viele Grüsse Joachim
participants (8)
-
Achim Hoffmann
-
B.Brodesser@t-online.de
-
David Haller
-
Dirk Gerlach
-
Jan.Trippler@t-online.de
-
Joachim Kieferle
-
Joerg Rossdeutscher
-
Thorsten Haude