Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
login skript vorzeitig beenden ?

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
leereruch
Gast





BeitragVerfasst am: 27. Jan 2004 21:22   Titel: login skript vorzeitig beenden ?

Hallo,

ich würde gerne für bestimmte Benutzer /etc/profile nicht auslesen - egal ob sh, ksh oder bash. Dazu Frage ich am Anfag jener die UID ab:

[ ${UID} = 123 ] && exit 1

Klappt nur nicht, weil nicht nur die /etc/profile verlassen wird, sondern auch der gesamte Loginprozess, was nicht Ziel der Übung ist. Unter Basic hatte ein "Goto Ende" weitergeholfen, aber es gibt ja keine Kultur mehr ;o)

Gibt es eine Möglichkeit, /etc/profile zu verlassen OHNE eine if Anweisung, deren Inhalt über die gesamte Datei geht ? Also kein

if uid = blah; then
100 Zeilen
else
exit 1
fi

weil das empfinde ich als deutlich unelegant.

P.S.: Gibt es eigentlich ein freies Basic für Linux ? Also ein richtiges, mit Zeilennummern, nicht diesen modernen Visual-Basic & Co. Quatsch
 

uljanow
Gast





BeitragVerfasst am: 27. Jan 2004 22:27   Titel: Re: login skript vorzeitig beenden ?

das profile-script wird "gesourced" aufgerufen und läuft daher in der gleichen shell wie der aufrufer. deshalb beendet das exit die ganze shell und nicht nur das script. mit "return" (statt exit) sollte es eigentlich funktionieren. (bin jetzt aber zu faul zum ausprobieren, also ohne gewähr).
 

Jochen
Gast





BeitragVerfasst am: 28. Jan 2004 11:45   Titel: Re: login skript vorzeitig beenden ?

Eine andere Möglichkeit als "if user_gueltig ; then normale_profile ;fi" über die ganze Datei sehe ich nicht. Aber Du gehst m.E. auch falsch an die Aufgabe heran: Die /etc/profile ist nun mal für *alle* User der bash gedacht. Anpassungen, die einzelne User betreffen, sollen in deren eigene ~/.bash_profile (oder ~/.profile, falls die bash als "sh" aufgerufen wird).

Bei "useradd" kann man mittels einer Option (man page gucken, hab gerade kein Linux an der Hand), mittels der man das Verzeichnis festlegt, welche .-Dateien ein neuer User kriegen soll. Da kann man ja 2 von haben: Eines für Standard-User, eines für die anderen, deren .bash_profile dann so gut wie leer ist.

> P.S.: Gibt es eigentlich ein freies Basic für Linux ? Also ein richtiges, mit Zeilennummern, nicht diesen modernen Visual-Basic & Co. Quatsch

Örks! Nicht Dein Ernst!

Jochen
 

leereruch
Gast





BeitragVerfasst am: 28. Jan 2004 17:17   Titel: Re: login skript vorzeitig beenden ?

Danke erstmal für die Antworten. Das Problem ist, das auch die "sh", also die bash-sh die /etc/profile anfasst und so auch Dienstbenutzer (in meinem Fall postgres und cyrus) die profile lesen.
Kurz, allen interactiven Benutzern zwinge ich ein fortune auf und alle sind von profile.d betroffen. Würde ich den Dienstbenutzern gerne erspaaren. Momentan überschreibe ich schon alle Daten in der .profile, bekomme aber z.B. das fortune nicht weg, weil jenes in der profile steht (könnte natürlich hier eine if Abfrage machen).

Werde später "return" nomal testen, ansonsten wechsel ich zu windows ;)

P.S.: Das mit Basic meine ich ernst. Ohne Ironie. Mit Zeilennummern hätte ich das Problem der profile nicht. War eine super Erfindung. Und dann kommt da noch die Nostalgie zu.
 

uljanow
Gast





BeitragVerfasst am: 28. Jan 2004 17:42   Titel: Re: login skript vorzeitig beenden ?

> Das mit Basic meine ich ernst. Ohne Ironie. Mit Zeilennummern hätte ich das Problem der profile nicht.

lol, dazu brauchst du aber keine zeilennummern, da genügen auch simple sprunglabels wie es sie auch in C gibt.

du könntest auch die eigentlichen einstellungen in eine eigene function auslagern.

code:

function einstellungen ()
{
# 100 zeilen
}

if uid = blah; then
einstellungen ()
else
exit 1
fi

sowas in der art.
 

leereruch
Gast





BeitragVerfasst am: 29. Jan 2004 8:57   Titel: Re: login skript vorzeitig beenden ?

Junger Mann, wenn ich die gesamte /etc/profile in eine function packe, kann ich auch gleich eine if Anweisung über die gesamte Datei machen. Ob ich für "if" oder "{}" einrücke, ist doch einerlei.

Da moderne Skriptsprachen zwar kilometerlange, reguläre Ausdrücke können, aber trotzdem nicht den einfachsten Anfoderungen genügen, habe ich jene Datei jetzt einfach nach profile.d ausgelagert und in der /etc/profile nur noch eine Abfrage drinnen.

Man kann ruhig blöd sein, man muß sich eben nur zu helfen wissen und danke in diesem zusammenhang nochmal an alle beteiligten


P.S.: Statt Zeilennummern gingen auch labels, wie sie cmd.com kennt, in der Art:

if true; then goto ENDE; fi
100 zeilen

:ENDE
exit 0

Das das "goto" oder "gosub" ausgestorben sind ist da sicherste Zeichen für den Verfall der Menschheit !
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy