2017-05-10 3 views
0

Ich muss ein Shell erstellen, dass wenn ein Benutzer sich anmeldet, es auf dem Terminal drucken wird, von dem die Verbindung hergestellt wurde, wie viele Benutzer bei einer Anzahl ihrer Prozesse angemeldet sind.Linux: Nachricht senden, wenn sich ein Benutzer anmeldet

Der zweite Teil (der mit Prozessen) war einfach, dank Sie den folgenden Befehl

ps hax -o user | sort | uniq -c 

Aber ich nicht weiter gehen kann. Ich weiß nicht, wie man dieses Skript automatisch für jeden Benutzer startet, und noch mehr, wie man auf seinem Terminal schreibt. (I fount Befehle wie msg, write aber alle erfordern mir den Benutzernamen einfügen)

+1

Wahrscheinlich besser geeignet für [SuperUser] (http://superuser.com/help/on-topic) oder [Unix und Linux] (https://unix.stackexchange.com/), aber Sie sollten einfach anrufen ein Skript von '/ etc/profile' oder das Äquivalent für die in Ihrem System vorhandenen Shells. –

Antwort

2

Ihr Befehl ps hax -o user | sort | uniq -c nicht in Benutzer Anzahl der Prozesse von protokollierten zeigen aber jeder Benutzer (einschließlich Systemkonten) zur Zeit nicht unbedingt angemeldet.

Liste der nur eingeloggte Benutzer können mit who Befehl werden erhalten.

Um Zählung zu bekommen verarbeitet pro versuchen können angemeldete Benutzer:

for u in `who -u | cut -f1 -d' ' | sort -u`; do echo -n "$u "; ps hx -u $u | wc -l; done; 

Nachricht an Benutzer-Terminal bei der Anmeldung nur angezeigt wird, in /etc/motd Testdatei eingestellt. Dies ist eine statische Datei. Was Sie brauchen, ist dynamisch erzeugte motd Datei. Dies kann mit update-motd erreicht werden.

auf Ubuntu/Debian update-motd Konfigurationsskripte kann ich bin mir nicht sicher, ob ähnliche Funktion ist wie Systeme auf RedHat in /etc/update-motd.d/

gefunden werden, aber Sie können für update-motd oder dynamische motd suchen.

0

Wenn Sie die Meldung möchten nur jedes Mal erscheinen der Benutzer das Terminal öffnet, können Sie bearbeiten /etc/bash.bashrc und umfassen die. sh Skript von dort. Diese Datei enthält grundsätzlich Befehle, die jedes Mal ausgeführt werden, wenn ein Terminal geöffnet wird.

+0

Ich lese darüber, aber da wir eine Verbindung zu einer Station (Server) herstellen, muss ich die Nachricht nur auf dem Terminal anzeigen, von dem die Verbindung hergestellt wurde. – SnuKies

+0

Das Starten einer neuen Shell ist nicht das Gleiche wie das Anmelden! Es gibt viele Gelegenheiten, Bash aufzurufen, bei denen es sich nicht um Logins handelt, und Benutzer können andere Shells als bash haben. –

Verwandte Themen