Ich möchte ein Skript verwenden, um den Benutzernamen des Benutzers herauszufinden, der sich derzeit auf der physischen Konsole befindet (der über Tastatur, Maus und grafische Anzeige verfügt).
Ich möchte nicht nur wissen, wer X ausführt (da die aktuelle Konsole auf ein anderes Terminal und einen anderen Benutzer umgeschaltet werden kann).
Zur Klarstellung:
Befehle wie w
, who
usw. zeigen , wer an welchem Terminal angemeldet ist. Das ist einfach. Ich würde jedoch gerne wissen, wem derzeit die physische Konsole (Display, Tastatur usw.) gehört. Wenn beispielsweise zwei Benutzer Anzeigen ausführen: 0 und: 1 und ich mit ctrl+ alt+ 7und ctrl+ alt+ zwischen den Anzeigen wechseln kann 8, möchte ich wissen, welcher Benutzer derzeit die Verbindung zwischen seiner Anzeige und dem tatsächlichen physischen Bildschirm hat .
Noch eine Klarstellung:
Ich bin nicht daran interessiert, meinen eigenen Benutzernamen zu kennen. Ich habe ein Skript, das als anderer Benutzer oder Root ausgeführt wird und wissen muss, wer die physische Anzeige verwendet. Es können mehrere X-Sitzungen von verschiedenen Benutzern ausgeführt werden, von denen einige virtualisiert und einige mit einem Remote-X-Server verbunden sind. Ich interessiere mich jedoch nur für die Sitzung, die tatsächlich die Ausgabe auf dem Monitor anzeigt.
Noch eine Klarstellung:
Unabhängig vom Befehl muss die Ausgabe nach dem Drücken von Ctrl+ Alt+ F1(Umschalten auf eine andere virtuelle Konsole) unterschiedlich sein.
Antworten:
Ich fürchte, ich kann Ihnen keine konkrete Antwort geben (weil ich die Technik nicht gut kenne), aber ich glaube, Sie können es mit D-Bus und ConsoleKit herausfinden.
Wenn ich zum Beispiel von X zu einem VT und zurück wechsle, höre ich Folgendes
dbus-monitor
:Insbesondere können Sie die GetActiveSession- Methode verwenden. So geht's mit
dbus-send
(möglicherweise erforderlichsudo
):Abhängig von Ihrer Anwendung möchten Sie dann die Eigenschaften des zurückgegebenen Objekts überprüfen, bei denen es sich um einen Objektpfad zu einer Sitzung handeln sollte .
quelle
dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Session2 org.freedesktop.ConsoleKit.Session.GetUser
der mit der aktuellen Benutzer-ID antwortet. Von dort kann die Bibliotheksfunktion getpwuid den Benutzernamen erhalten.Mit dem Befehl w können Sie sehen, wer angemeldet ist. Die Leerlaufzeit und was sollte Ihnen sagen, was ausgeführt wird - in diesem Fall zeigt gdm eine aktive Anmeldung an, und die Leerlaufzeit zeigt an, dass der Benutzer seit 2 Tagen nicht mehr im System war. Vergleichen Sie dies mit dem Login von blackbeauty, das eine Leerlaufzeit von 0,00 hat, was darauf hinweist, dass es derzeit verwendet wird.
quelle
Es gibt viele Wege:
whoami
w
echo $USER
logname
quelle
Ein weiterer Befehl ist
Es zeigt den aktuellen logeed Benutzernamen
quelle