Ich suche nach einer Möglichkeit, den Start meiner Entwicklungsumgebung zu automatisieren. Ich habe drei virtuelle Maschinen, die gestartet werden müssen, dann ssh
zu jedem von ihnen und öffnen VPN auf ihnen.
Bisher habe ich sie dazu gebracht, zu beginnen und habe es geschafft, an sie zu senden:
%Vor%Wie führe ich einen zusätzlichen Befehl in jedem der Terminals aus, der openvpn startet?
Der Einfachheit halber versuche ich in jedem Terminal echo 1
anstatt VPN zu starten.
Ich habe festgestellt, dass mehrere Befehle beim Terminalstart wie folgt ausgeführt werden können:
%Vor%Damit ein Terminal es einfach hält, habe ich geändert:
%Vor%zu:
%Vor% Aber 1
wurde nicht im Terminal von virtual_3 gedruckt.
Dann dachte ich, vielleicht wird der Befehl zu schnell ausgeführt, bevor das Terminal fertig ist, also habe ich versucht, &&
hinzuzufügen:
Aber das gab auch kein Ergebnis.
Zunächst einmal, wenn Sie
ausführen %Vor% Sie erhalten bash
, um cmd1
und cmd2
auszuführen. Es führt nicht zuerst cmd1
aus und gibt dann cmd2
an sein Ergebnis zurück. ssh
ist ein Programm, das im Terminal ausgeführt wird und Ihr cmd2
wird erst ausgeführt, wenn dies abgeschlossen ist.
Also müssen Sie ssh
ausführen und das sagen, um Ihren Befehl auszuführen.
Sie können dies tun, indem Sie:
%Vor% ssh
wird jedoch beendet, nachdem der Befehl beendet wurde. Wie Sie in " mit ssh sehen können, wie können Sie einen Befehl auf dem Remote-Computer ausführen, ohne zu beenden? ", können Sie Führen Sie ssh
mit der Option -t
aus, damit sie nicht beendet wird:
So wird Ihr Befehl am Ende zu:
%Vor% Sie haben recht, wenn Sie -t
alleine geben, ist das nicht genug (obwohl notwendig). -t
weist Puffer für tty
zu, aber führt bash nicht für Sie aus. Aus dem Handbuch von ssh
:
-t Pseudo-tty-Zuweisung erzwingen. Dies kann verwendet werden, um beliebige bildschirmbasierte Programme auf einem entfernten Rechner auszuführen, was sehr nützlich sein kann, z. wenn Sie Menüdienste implementieren. Mehrere Optionen -t erzwingen die Zuweisung von Tty, auch wenn ssh kein lokales Tty hat.
Wenn
command
angegeben ist, wird es auf dem Remote-Host anstelle einer Login-Shell ausgeführt.
Was du also brauchst ist, dich selbst zu verprügeln. Deshalb:
%Vor%Tags und Links bash