SSH Fire and Forget

schumischumi

Lt. Commander
Registriert
Dez. 2011
Beiträge
1.069
Hi,

ich möchte von einem Linux Server (Suse irgendwas) auf einem Windows Server inkl Cygwin eine Batch aufrufen und nicht abwarten, bis diese beendet wurde. Sprich die SSH Session soll den Befehl absetzen und dann geschlossen werden.

Folgendes habe ich schon probiert:

1. Eine "starter.bat" aufrufen die nur folgendes beinhaltet:
Code:
start meineBatch.cmd
Problem: Auch hier läuft die SSH-Session weiter. Wenn ich die Session mit CTRL+C abschieße läuft der Batch auf dem Server weiter, aber dieser "harte Abbruch" lässt sich halt schlecht in ein Skript einbauen. Auch der SSH Schalter "-f" bringt hier nix.

2. Screen-Befehl
Wurde damals leider nicht im Cygwin paket mitgeliefter und kann jetzt nicht mehr nachinstalliert werden.

3. X-Andere, eher doofe Möglichkeiten wo nix funktioniert hat


Temporäre und sehr unschöne Lösung:
Erstelle mir vorab einen Task der die Batch aufruft und starte dann mit schtasks per SSH den Task


für neue Idee wäre ich sehr dankbar.
 
schumischumi schrieb:
für neue Idee wäre ich sehr dankbar.

man nohup hilft.

NAME
nohup - run a command immune to hangups, with output to a non-tty

DESCRIPTION

Run COMMAND, ignoring hangup signals.
 
Hätte ich auch schon gefunden, aber:
Code:
$ nohub
-bash: nohub: command not found

also am Linux Server und am Cygwin Server. Am ersteren könnte ich es theoretisch noch nachinstallieren lassen, aber da bringts mir ja nicht viel. wenn dann müsste das nohub ja in die ssh session bzw. den abgesetzten befehl.
 
man kann sich nicht vorstellen wie wütend mich mein Tippfehler jetzt macht...

hat aber trotzdem nicht so funktioniert wie gewünscht.
ich verwende den Befehl:
Code:
ssh -i pfadzursa user@server "nohup /cygdrive/c/test.cmd &"
hier bekomme ich immer noch rückmeldungen bzw. die batch ausgabe auf meinem LinuxServer sprich die SSH-Session ist noch offen. den nohup befehl vor dem SSH Befehl zu verwenden wäre ja das selbe wie SSH -f. Hier sehe ich die Rückmeldungen nicht mehr aber die Session bleibt offen.

Stell ich mich einfach nur doof an? ("Ja" ist eine durchaus akzeptable Antwort)
 
Warum kannst du screen nicht nachinstallieren?
Normalerweise muss man doch nur nochmal das cygwin setup starten um weitere Pakete hinzuzufügen.
 
@Überkinger:
das würde doch den SSH Prozess auf der linux Kiste im Hintergrund starten, genau wie ssh -f oder? Genau das will ich ja nicht.
edit: Test sagt auch, dass der ssh prozess die ganze zeit aktiv bleibt.

@Freezedevil:
Hat zwei Gründe: einmal wurde das paket einmal so geschnürrt und ausgeliefert (stichwort softwareverteilung). zum zweiten müsste ich das dann auch jedem cygwin/windows server machen und das wäre zu viel arbeit.
 
Zuletzt bearbeitet:
Wenn ich das jetzt nach meinen Tests richtig verstanden hab, dann bleibt die ssh Session so lange offen wie ein Remoteprozess was auf stdout schreibt.
Session bleibt offen:
Code:
ssh localhost "ping localhost &"

Daher muss man alle Ausgaben in den Skat drücken:
Code:
ssh localhost "ping localhost &>/dev/null &"

Das hat bei mir zumindest funktioniert.
 
top funktionier. vielen vielen dank Freezedevil!!
 

Ähnliche Themen

Zurück
Oben