befehl "logout" in PerlScript

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Friesi
Beiträge: 582
Registriert: 07.07.2003 20:40:11
Wohnort: Stromberg
Kontaktdaten:

befehl "logout" in PerlScript

Beitrag von Friesi » 25.04.2004 22:55:24

Ich möchte gerne in einem Perlscript den Befehl Logout verwenden.
Rufe ihn mit

Code: Alles auswählen

system("logout");
auf doch da passiert nix.
Bei anderen scripten mache ich immer /bin/BEFEHL

doch finde ich nirgens die logout datei! weder in /bin /usr/bin oder /usr/local/bin

Will einfach, das sich beim beenden des Scriptes der User sich Automatisch auslogt.

Wie bekomme ich das denn hin?!

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 26.04.2004 04:23:45

"logout" ist ein interner Shell-Befehl. Um ein "logout" zu simulieren, musst du das HUP-Signal an die Login-Shell senden. Deren PID herauszufinden, ist meines Wissens nach nicht leicht (so kannst du zum beispiel nicht einfach die Parent-PID des Perl interpreters nehmen, da dieser auch in einer Subshell aufgerufen werden kann) Du könntest in der /var/run/utmp (man utmp) nach der PID der Loginprozesses suchen; allerdings bekommst du probleme, wenn der Benutzer mehr als einmal eingeloggt ist.

Was genau willst du denn machen?

Friesi
Beiträge: 582
Registriert: 07.07.2003 20:40:11
Wohnort: Stromberg
Kontaktdaten:

Beitrag von Friesi » 26.04.2004 08:47:03

mhm ..

Also ich möchte, das sich jemand via SSH auf den Server einloggt aber da nix machen kann.
Es sollte also sofort dieses Script gestartet werden wo 3 Optionen drin stehen. Dann kann er 1, 2 oder 3 eingeben. Wenn die Aufgaben erledigt sind und das Script am ende ankommt. Soll er den User direkt wieder ausloggen.
Das Script würde ich als shell nehmen (anstatt /bin/bash) geht das überhaupt?

Möchte halt nicht, das er über die Shell auf dem Server rumgurcken kann, da ich ihn ja nicht in seinem Verzeichnis "einsperren" kann? Oder geht das irendwie per SSH?

Benutzeravatar
Bert
Beiträge: 3751
Registriert: 16.07.2002 14:06:52
Wohnort: Dresden
Kontaktdaten:

Beitrag von Bert » 26.04.2004 09:44:40

Du könntest dieses Script dem entsprechenden Benutzer als Login Script zuweisen (/etc/passwd). Dann kommt er nur an dieses Script und sonst nichts. Ich mach sowas gerne um Benutzern zwar das Ändern Ihrer Passwörter zu ermöglichen, sonnst aber keinen Zugang zu geben.

Hab von Perl keine Ahnung. Eventuell fehlen dann ein paar Umgebungsvariablen?
Programmer: A biological machine designed to convert caffeine into code.
xmpp:bert@debianforum.de

Friesi
Beiträge: 582
Registriert: 07.07.2003 20:40:11
Wohnort: Stromberg
Kontaktdaten:

Beitrag von Friesi » 26.04.2004 15:38:03

Ja genau so hab ich das auch gemacht.
Doch wenn das Script durchgeladen ist, sollen die User ja nicht einfach die Shell schließen, sondern sollen sich ausloggen. Bzw werden die Automatisch ausgeloggt. Und dies will ich versuchen hinzubekommen.

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 26.04.2004 15:40:24

Wenn du dein Skript als Login-Shell in der /etc/passwd einträgst, wird der Benutzer ausgeloggt, nachdem sich das Skript beendet.

(BTW: scp und sftp werden in diesem Fall wohl nicht mehr gehen)

Benutzeravatar
Bert
Beiträge: 3751
Registriert: 16.07.2002 14:06:52
Wohnort: Dresden
Kontaktdaten:

Beitrag von Bert » 26.04.2004 15:41:54

Sie sollten ja gar keine Shell bekommen. Ihre 'Shell' ist ja Dein Script. Ich hab es mit /bin/paswd gemacht, dann bekommen die Benutzer nur die Aufforderung ein neues Passwort einzugeben. Wenn sie das gemacht haben, beendet sich passwd und die Verbindung ist wieder dicht. So solte es doch mit Deinem Script auch gehen?
Programmer: A biological machine designed to convert caffeine into code.
xmpp:bert@debianforum.de

Friesi
Beiträge: 582
Registriert: 07.07.2003 20:40:11
Wohnort: Stromberg
Kontaktdaten:

Beitrag von Friesi » 26.04.2004 15:44:22

Ah :-) Habs nun ausprobiert und es funktioniert!
Danke Jungs *gg*

Wieder etwas gelernt 8)

Antworten