2014-11-22 11 views
11

Ich habe eine Batch-Datei wie folgt geschrieben:Wie verhindert man, dass die PuTTY-Shell nach dem Ausführen eines Befehls aus der Batch-Datei in Windows automatisch beendet wird?

Start putty.exe -ssh 172.17.0.52 -l root -m dummy.txt 

Dann in dummy.text habe ich diesen Befehl geschrieben:

avahi-daemon --no-drop-root -D 
export XVHMI_USERCONFIG_PATH=/home/UserProfileConfig 
export XDG_RUNTIME_DIR=/tmp 
cd /opt/bosch/airis/bin 

Wenn ich die .bat-Datei ausführen, PuTTY beginnt, Befehle auszuführen (hoffentlich, nicht sicher) und es geht.

Wie man dieses Fenster offen hält?

Ich habe für das gleiche gegoogelt, aber keine solide Hilfe. Ich lese auf Stack-Überlauf selbst, dass wir etwas in der txt-Datei definieren müssen, aber was und vor allem wie?

Antwort

12

Die SSH-Sitzung wird beendet (und PuTTY damit), sobald der Befehl beendet ist. Normalerweise ist der "Befehl" Shell. Wie Sie diese Standardeinstellung „Befehl“ außer Kraft gesetzt haben und dennoch wollen Sie die Shell dennoch laufen, müssen Sie explizit die Shell selbst ausführen:

avahi-daemon ... ; /bin/bash 

Auch die Verwendung von -m Schalter einen nicht-interaktiven Terminal impliziert, werden Sie wahrscheinlich ein interaktives Terminal mit -t Switch zurückzwingen wollen.

Obwohl ich nicht wirklich sicher bin, ob Sie Shell ausführen möchten oder wenn Sie nur Ihre Befehlsausgabe sehen möchten. Wenn Letzteres, haben Sie in Betracht gezogen, plink zu verwenden? Es ist Konsolen-Terminal-Client von PuTTY-Paket. Da es sich um eine Konsolenanwendung handelt, erbt es die Konsole der übergeordneten Batchdatei, und Sie können die Stapelkonsole bei Bedarf mit dem Befehl pause anhalten.

Eine weitere Option (sowohl für PuTTY als auch für Plink) besteht darin, auf der Gegenseite zu pausieren. Z.B. Verwenden Sie den Befehl read.

avahi-daemon ... ; read 
+0

Vielen Dank für Ihre Antwort Kumpel :) Was passiert, wenn ich einen Befehl, der in Endlosschleife laufen, gibt es noch keine Möglichkeit, offene Schale Fenster zu halten? Lesen wird nur diese Fenster pausieren, das will ich nicht. Ich möchte Protokolle für diese Endlosschleife-Anwendung bekommen. – mkkhedawat

+1

Wie ich geschrieben habe, schließt die Sitzung, sobald der Befehl beendet ist. Ein Endlosschleifenbefehl wird niemals beendet. Die Sitzung/das Fenster wird also nie geschlossen. –

+0

Nein, in meinem Fall. Ich könnte etwas falsch machen. Wie überprüft man, irgendeinen Vorschlag? – mkkhedawat

3

Wie Martin vorgeschlagen habe ich versucht, diesen Schritt:

  1. putty.exe -SSH 172.17.0.52 -l root -m dummy.txt -t

  2. hinzugefügt/bin/Bash am Ende der Befehle in dummy.txt

Es funktionierte für mich. Bitte beachten Sie, dass Sie beide oben genannten Schritte befolgen müssen. Auf diese Weise können Sie die Sitzung am Leben erhalten und weitere Befehle manuell ausführen.

Verwandte Themen