Antworten:
Geben Sie die Befehle ein ~/.bashrc
. Alles, was sich dort befindet, wird jedes Mal ausgeführt, wenn Sie sich anmelden.
Wenn Sie Befehle benötigen, die nur ausgeführt werden, wenn Sie sich über ssh anmelden (aber nicht, wenn Sie sich physisch anmelden), können Sie wahrscheinlich das Vorhandensein der SSH_CONNECTION
Umgebungsvariablen testen und die Befehle nur ausführen, wenn Sie feststellen, dass sie vorhanden sind.
Fügen Sie dies einfach in ~ / .bashrc oder /etc/bash.bashrc ein, wenn Sie dies für alle Benutzer wünschen:
if [[ -n $SSH_CONNECTION ]] ; then
echo "I'm logged in remotely"
fi
screen
, könnte ich Ihre Antwort verwenden und screen
dort anstelle des Echos einfügen. Das Problem dabei ist, dass das Beenden der Bildschirmsitzung zur SSH-Eingabeaufforderung zurückkehrt, anstatt sich abzumelden. Das Schreiben dieses Kommentars gab mir jedoch die Antwort: Fügen Sie den logout
Befehl nach dem screen
Befehl hinzu.
exec command
ersetzt die aktuelle Shell durch alles, was Sie ausführen.
Alternativ können Sie einen Befehl angeben, der während des Aufrufs von ssh
: ausgeführt werden soll.
$ ssh -t server 'cmd; exec bash -l'
Der letzte Befehl in der Liste sollte eine interaktive Sitzung in Ihrer bevorzugten Shell starten. Wenn Sie viele Befehle ausführen müssen, sollten Sie eine Skriptdatei auf Ihrem SSH-Server erstellen.
Eigentlich ~/.ssh/rc
ist ein richtiger Ort für Sie Befehl auszuführen hinzuzufügen , wenn Sie sich anmelden, anstatt jeder Benutzer des Systems.
~/.ssh/rc
Commands in this file are executed by ssh when the user logs in,
just before the user's shell (or command) is started. See the
sshd(8) manual page for more information.
Anmelden am Remote-Host nach Ausführung der an den Remote-Host übergebenen Befehle:
.bashrc
auf dem Remote-Host ausgeführtLässt Sie bei der Bash-Eingabeaufforderung auf dem Remote-Host zurück (wenn keine Fehler vorliegen)
$ ssh user@host "bash -lc cmd; cmd; ..."
Die Option -l macht es zu einer Login-Shell (z. B. .bashrc ausführen)
Die Option -c gibt an, dass der explizite Befehl bash ausgeführt wird
man bash
) lesen .