• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Test, ob jemand angemeldet ist gesucht

rolle

Guru
Liebe Leute!

Ich möchte meinen Rechner immer dann schlafen legen, wenn mythtv nicht arbeitet und niemand angemeldet ist. Dazu muß ich in einem Bashscript abfragen, ob jemand angemeldet ist. Der Ansatz aus dem netz war
Code:
if last | grep "still logged in" 
then exit 1
Leider funktioniert das aber nur bis zu ersten Aufwachen aus s2ram, danach ist die Ausgabe von 'last' komplett ohne "still logged in", obwohl ich an dem Rechner arbeite.

Ich hatte mir also gedacht, teste einmal das:
Code:
if [[ `who -u` != "" ]]
oder das
Code:
if [[ `who -q | grep "="` != *0 ]]

Beides führt mich aber leider nicht zum gewünschten Ergebnis. Wie frage ich also in einem Bashscript ab, ob noch ein Nutzer angemeldet ist?
 

RG

Member
Hallo,

hmmm, nur mal so.... ;-)

w
finger

beides Progrämmchen, die User anzeigen....

Schönen Gruß
RG
 
A

Anonymous

Gast
finger ist wohl heute nicht mehr ganz Richtige, und wird aus verschiedenen Gründen nur noch selten benutzt. Aber ansonsten nehme ich mal an, sind das alles Programme die auf die Informationen von /var/log/wtmp und /var/run/utmp zugreifen, wenn die nicht mehr aktuell sein sollten ??? Hab ich so auch noch nicht bemerkt. Wer sich nach dem Aufwachen neu anmeldet, sollte schon wieder sauber eingetragen sein, und wer schon angemeldet war, als der Rechner eingeschlafen ist, der ist sicherlich vorher schon eingeschlafen. ;) ;) ;) oder hat den Rechner gezielt schlafen geschickt.

Fällt mir nur der Weg über die Prozesse ein, wer angemeldet ist, muss mindestens einen Prozess laufen haben der als seine Anmeldeshell eingetragen ist, oder es läuft ein X-server auf dem sollten dann auch jede Menge Prozesse unter seiner Kennung laufen.

Besser denke ich mir, währe aber herauszubekommen was Linux denn als Indikator heranzieht, um den Recher von sich aus schlafen zu schicken. (eventuell über einen bestimmten Zeitraum ausbleibende Interrupts von Maus und Tastatur) Wenn das deinem Programm oder Script "simulieren" könnte, dann sollte das Linux von sich aus immer Richtig machen.

robi
 
Eventuell mache ich mich hier zum Clown, aber wieso zur Überprüfung nicht einfach den Klassiker 'ls' verwenden und mit 'grep' verbinden, z.B. so:

Code:
ps aux | grep -v whoami
 

RG

Member
Hi,

ok, finger ist nicht mehr ganz zeitgemäß ;-)

Habe auf meinem PC noch:

users

gefunden.

Vielleicht funkt. das...

Schönen Gruß
RG
 
OP
R

rolle

Guru
Die Methode über ps spuckt auch alle Systemprozesse aus, die unter root laufen. Das bringt mir so leider nichts. users wollte ich auch schon nehmen. Nur wie lautet desen Ausgabe, wenn niemand anghemeldet ist? Es würde mit who oder w ja auch klappen, solange ich nur die Ausgabe kennte, wenn niemand angemeldet ist. Naja, ich versuche jetzt mal die Ausgaben herasuzufinden.
 
OP
R

rolle

Guru
Ich glaube im Moment, daß
Code:
if who -u | grep ":"
meinen Anforderungen entspricht. Ich lasse das so mal eine Weile laufen.
 

TomcatMJ

Guru
Code:
who -q
gäbe dir z.B. direkt die Anzahl der aktiven Logins zusammen mit den Usernamen der aktiv eingeloggten User an.

Bis denne,
Tom
 
@ TomcatMJ,

ließ mal den ersten Post, dann hättest Du mitgekriegt das dies nicht klappt, aus welchen Gründen auch immer.
 

TomcatMJ

Guru
achso,ja...da gäbe es noch eine Variante die dann eben nicht die Info aus dem RAM nimmt auf die who zurückgreifen würde sondern die Datei /var/run/utmp auswertet:
Code:
users
zeigt alle aktuell gemäß dem Eintrag in besagter Datei angemeldete User an,allerdings nicht an welchen Konsolen diese Anmeldung erfolgte. Da das Ganze dort in einer Datei gespeichert wurde dürfte das allerdings ein suspend2ram überstehe4n und dennoch ausgewertet werden können.

Bis denne,
Tom
 
Oben