Ich muss ein paar SSH-Tunnel aus einem Shell-Skript einrichten. Ich habe versucht, sie als BG-Aufgaben auszuführen:
#!/bin/sh
ssh -L 3000:server1:5029 me@server2 &
ssh -L 3001:server3:3306 me@server2 &
Aber die Tunnel scheinen nicht richtig zu funktionieren, wenn ich sie so starte.
Sie funktionieren einwandfrei, wenn ich sie manuell in ihren eigenen Registerkarten einrichte. Daher ist meine nächste Idee, das Skript neue Registerkarten in Terminal öffnen zu lassen und die Befehle dort als Vordergrundprozesse auszuführen.
Hinweis: Diese Frage lautete ursprünglich "Wie starte ich eine neue Terminalregisterkarte in der Shell und führe dann einen Befehl darin aus?", Aber ich erhielt zwei Antworten zum Umgang mit den Tunneln. Für die Frage "Öffnen einer Shell" habe ich dies bei SuperUser gefunden , was funktionieren wird, obwohl neue Registerkarten im Hintergrund den Vordergrundfenstern vorzuziehen wären, die es öffnet.
quelle
Antworten:
Dies ist technisch gesehen keine Antwort auf die gestellte Frage, sondern eine Antwort auf Ihr Problem wie beschrieben. Der Befehl ssh verfügt über zwei Schalter, die für Sie nützlich sein können:
ssh wird angewiesen, sich nur so lange im Vordergrund aufzuhalten, bis er nach den erforderlichen Kennwörtern fragt. Anschließend wird er in den Hintergrund gestellt und führt keinen Remote-Befehl aus, sondern bearbeitet nur den Tunnel.
Wenn Sie wirklich möchten, dass dies in einer Registerkarte angezeigt wird, möchten Sie möglicherweise eine andere Lösung.
quelle
jobs
nochps
listet einen Griff zu ihnen ....-f
den Prozess&
am Ende über weglassen und im Hintergrund anzeigen , die PID über$!
als Handle abrufen können, um den Tunnelprozess später in Ihrem Skript abzubrechen.Ich würde vorschlagen, einfach Ihre Tunnel in Ihre "one for whatever" -Verbindung zu integrieren. Sie können es einfach machen, indem Sie die entsprechenden Einträge zu Ihrer
~/.ssh/config
Datei hinzufügen :Sie können sich dann einfach anmelden, indem Sie Folgendes ausführen:
Die Tunnel sollten hochfahren und funktionieren, sodass Sie eine einzige SSH-Instanz haben, in der Sie "was auch immer" tun können. Wenn Sie eine zweite Verbindung zu öffnen müssen
server2
, wird möglicherweise eine Fehlermeldung angezeigt:Das tut nichts anderes als deinen Augen weh. Sie können diese Weiterleitungen auch für mehrere Server einrichten, indem Sie ähnliche Leitungen für andere Server hinzufügen. Dies geschieht automatisch.
quelle