So erstellen Sie eine neue Terminalsitzung und führen mehrere Befehle aus

8

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:

%Vor%

Aber das gab auch kein Ergebnis.

    
TheMeaningfulEngineer 16.07.2012, 08:32
quelle

1 Antwort

11

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:

%Vor%

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%     
Shahbaz 16.07.2012, 08:43
quelle

Tags und Links