Ich versuche, einen Weg zu finden, einen bestimmten Befehl auszuführen, wenn ich mich über SSH mit einem Server verbinde. Damit meine ich, dass der Befehl beim Öffnen einer Verbindung bedingungslos ausgeführt wird, also würde dies vorzugsweise gleichzeitig mit einem Banner
ausgeführt werden Option würde gedruckt, wenn gesetzt. Ich versuche nicht, einen Befehl nach auszuführen anmelden.
Was ich suche, zum Beispiel:
$ ssh [email protected]
(Command essentially executed at this point, before the input prints.)
[email protected]'s password:
Der Grund, warum ich das versuche, ist, dass ich ein kurzes Skript ausführen möchte, das Push-Benachrichtigungen an mein Telefon sendet, wenn eine Verbindung hergestellt wird, unabhängig davon, ob ich mich anmelde oder nicht. Ich hatte geplant, pam_exec zu verwenden, aber das löst nur auth
aus wenn ein Passwort eingegeben und die Eingabetaste gedrückt wird, und das account
und session_*
Module werden nur bei erfolgreicher Anmeldung ausgelöst. Wenn eine Verbindung geöffnet und dann geschlossen wird, z. B. wenn ein Benutzer einfach Strg+C drückt, wird das Skript niemals ausgeführt.
Gibt es dafür eine Methode? Ich finde nicht viele Informationen zu diesem Thema.
Akzeptierte Antwort:
Sie können sshd
ausführen über inetd
, mit inetd
läuft:
sh -c 'your-command; exec sshd -iD'
bei einer eingehenden Verbindung (siehe den Vorbehalt in sshd(8)
obwohl).