Hat jemand einen Tip für mich ob und wo ich ein run-parts àla Debian für SuSE finde. DESCRIPTION run-parts : run-parts runs a number of scripts or programs found in a single directory directory. Filenames should consist entirely of upper and lower case letters, digits, under scores, and hyphens. Subdirectories of directory and files with other names will be silently ignored. Scripts must follow the #!/bin/interpretername convention in order to be executed. They will not automatically be executed by /bin/sh. The files found will be run in the lexical sort order of the filenames. Tschüss, Thomas
On Mit, 03 Jul 2002 at 20:54 (+0200), Thomas Templin wrote:
Hat jemand einen Tip für mich ob und wo ich ein run-parts àla Debian für SuSE finde. DESCRIPTION run-parts : run-parts runs a number of scripts or programs found in a single directory directory. Filenames should consist entirely of upper and lower case letters, digits, under scores, and hyphens. Subdirectories of directory and files with other names will be silently ignored.
Scripts must follow the #!/bin/interpretername convention in order to be executed. They will not automatically be executed by /bin/sh.
The files found will be run in the lexical sort order of the filenames.
Hmm, ich kenne run-parts nicht, aber das kann man doch auch relativ simpel auf Shell-Ebene machen: <ungetesteter Schnipsel> ls verzeichnis | while read f; do test -f "$f" || continue ftyp="`file -b $f`" if echo $ftyp | grep -q 'ELF 32-bit LSB executable'; then # Binary "verzeichnis/$f" elif echo $ftyp | grep -q 'perl script text'; then # Perl-Script $perl "$f" elif echo $ftyp | grep -q 'Bourne-Again shell script text'; then # Shell-Script $shell "$f" elif echo $ftyp | grep -q 'script text'; then # anderes Script: Interpreter holen prog="`head -1 \"$f\" | sed 's/^#!//'`" $prog "$f" # usw fi done Das klappt natürlich nur, wenn den Programmen / Scripts keine Parameter übergeben werden müssen (wobei ich mir nicht vorstellen kann, dass run-parts sowas berücksichtigt). BTW: Die Varianten für Shell und Perl oben sind etwas unsicher, file irrt sich manchmal auch. Vielleicht sollte man immer mit der letzten Variante arbeiten. Jan
On Wednesday 03 July 2002 23:49, Jan Trippler wrote:
On Mit, 03 Jul 2002 at 20:54 (+0200), Thomas Templin wrote:
Hat jemand einen Tip für mich ob und wo ich ein run-parts àla Debian für SuSE finde. DESCRIPTION run-parts : run-parts runs a number of scripts or programs found in a single directory directory. Filenames should consist entirely of upper and lower case letters, digits, under scores, and hyphens. Subdirectories of directory and files with other names will be silently ignored.
Scripts must follow the #!/bin/interpretername convention in order to be executed. They will not automatically be executed by /bin/sh.
The files found will be run in the lexical sort order of the filenames.
Hmm, ich kenne run-parts nicht, aber das kann man doch auch relativ simpel auf Shell-Ebene machen:
<ungetesteter Schnipsel>
ls verzeichnis | while read f; do test -f "$f" || continue ftyp="`file -b $f`"
if echo $ftyp | grep -q 'ELF 32-bit LSB executable'; then # Binary "verzeichnis/$f" elif echo $ftyp | grep -q 'perl script text'; then # Perl-Script $perl "$f" elif echo $ftyp | grep -q 'Bourne-Again shell script text'; then # Shell-Script $shell "$f" elif echo $ftyp | grep -q 'script text'; then # anderes Script: Interpreter holen prog="`head -1 \"$f\" | sed 's/^#!//'`" $prog "$f" # usw fi
done
Das klappt natürlich nur, wenn den Programmen / Scripts keine Parameter übergeben werden müssen (wobei ich mir nicht vorstellen kann, dass run-parts sowas berücksichtigt). BTW: Die Varianten für Shell und Perl oben sind etwas unsicher, file irrt sich manchmal auch. Vielleicht sollte man immer mit der letzten Variante arbeiten. [...] Prinzipiell hast Du recht. Als ich das erste Script mit einem Aufruf von run-parts gesehen habe hab ich genau das gleiche gedacht. Ich grüble momentan warum man so etwas wie ein Programm für diesen Zweck benutzt. Ich harre da der Erkenntnis, muss wohl noch einige Nächte drüber schlafen :)
Aber was mir aufgefallen ist: Die Scripte brauchen nicht auf Xecutable gesetzt sein Die Rechte des run-parts users (idr. nur root) gehen auf die Scripte über. Eigendlich ganz pfiffig, ich muss mir wohl doch mal den Source Code besorgen. Tschüss, Thomas
On Fre, 05 Jul 2002 at 02:50 (+0200), Thomas Templin wrote:
[...] Prinzipiell hast Du recht. Als ich das erste Script mit einem Aufruf von run-parts gesehen habe hab ich genau das gleiche gedacht. Ich grüble momentan warum man so etwas wie ein Programm für diesen Zweck benutzt. Ich harre da der Erkenntnis, muss wohl noch einige Nächte drüber schlafen :)
Aber was mir aufgefallen ist: Die Scripte brauchen nicht auf Xecutable gesetzt sein Die Rechte des run-parts users (idr. nur root) gehen auf die Scripte über.
Eigendlich ganz pfiffig, ich muss mir wohl doch mal den Source Code besorgen.
Das pfiffige ist das Linux-System, nicht run-parts. Wenn Du wie in meinem Code-Schnipsel ein Script über den Aufruf des Interpreters startest, dann braucht der Interpreter x-Rechte, das Script wird von ihm nur gelesen - und eben interpretiert. Das kannst Du mit jedem beliebigen Shell-Script testen. Und auch das mit den Rechten ist Linux-/ Unix-Grundlage: Naormalerweise wird jedes Programm mit den Rechten des aufrufenden Users ausgeführt. Eine Ausnahme bilden Binaries (nicht Scripts!) mit gesetztem s-Bit. Diese werden mit den Rechten des Eigentümers (oder / und der Gruppe) der Programmdatei ausgeführt, und haben demzufolge auch die Möglichkeit, von ihnen ausgeführte Programme mit diesen Rechten zu starten. Beispiele dafür sind sudo oder passwd. Ich brauche wohl nicht zu erwähnen, dass sowas gefährlich ist und nur mit Vorsicht (und sowenig wie möglich) zu machen ist. Jan
participants (2)
-
Jan.Trippler@t-online.de
-
Thomas Templin