it-swarm.com.de

Führen Sie ssh aus und führen Sie sofort den Befehl aus

Ich versuche, einen UNIX- oder Bash-Befehl zu finden, um einen Befehl auszuführen, nachdem eine Verbindung zu einem SSH-Server hergestellt wurde. Zum Beispiel:

ssh [email protected] "tmux list-sessions"

Der obige Code funktioniert, listet die Sitzungen auf, trennt dann aber sofort die Verbindung. Das Einfügen in den sshrc auf der Serverseite funktioniert, aber ich muss in der Lage sein, es auf der Clientseite einzugeben. Ich möchte einen Befehl ausführen können, er meldet sich an, öffnet das Fenster und führt dann den von mir festgelegten Befehl aus. Ich habe es versucht

[command] | ssh [email protected]

ssh [email protected] [command]

ssh [email protected] "[command]"

ssh -t [email protected] [command]
135
cadlac
ssh -t 'command; bash -l'

führt den Befehl aus und startet anschließend eine Login-Shell. Zum Beispiel:

ssh -t [email protected] 'cd /some/path; bash -l'
214
Barmar

Sie können die Befehlszeilenoption LocalCommand verwenden, wenn die Option PermitLocalCommand aktiviert ist:

ssh [email protected] -o LocalCommand="tmux list-sessions"

Weitere Informationen zu den verfügbaren Optionen finden Sie in der ssh_config Manpage.

14

Dies ist nicht ganz das, wonach Sie suchen, aber ich fand es unter ähnlichen Umständen nützlich.

Ich habe kürzlich Folgendes zu meinem $HOME/.bashrc Hinzugefügt (etwas Ähnliches sollte mit anderen Shells als bash möglich sein):

if [ -f $HOME/.add-screen-to-history ] ; then
    history -s 'screen -dr'
fi

Ich lasse eine screen Sitzung auf einem bestimmten Computer laufen, und ich hatte Probleme mit dem Trennen von ssh Verbindungen zu diesem Computer, sodass ich jedes Mal screen -dr Erneut ausführen muss Ich verbinde mich wieder.

Mit diesem Zusatz habe ich nach dem Erstellen dieser (leeren) Datei in meinem Ausgangsverzeichnis automatisch den Befehl screen -dr In meinem Verlauf, wenn meine Shell gestartet wird. Nach dem erneuten Verbinden kann ich einfach tippen Control-PEnter und ich bin wieder in meiner Bildschirmsitzung - oder ich kann es ignorieren. Es ist flexibel, aber nicht ganz automatisch, und in Ihrem Fall ist es einfacher als tmux list-sessions Einzugeben.

Möglicherweise möchten Sie den Befehl history -s Unbedingt ausführen.

Hierfür muss Ihr $HOME/.bashrc Auf jedem der Zielsysteme aktualisiert werden, was es möglicherweise für Ihre Zwecke ungeeignet macht oder nicht.

6
Keith Thompson