Automatisierung von SSH in Windows mit Ruby

8

Ich habe 13 Windows-Server mit Jenkins-Slaves. Aus irgendeinem Grund (Windows-Updates?), Die Jenkins-Slaves beenden regelmäßig zu arbeiten und der Jenkins-Slave-Dienst muss neu gestartet werden. Wenn ich manuell SSH an die Maschinen (cygwin SSH-Server läuft) gebe ich einfach:

%Vor%

und das (fast) immer löst das Problem.

Also habe ich ein Ruby-Skript geschrieben, um das zu automatisieren.

Hier ist es:

%Vor%

Das Skript wird auf allen Rechnern ausgeführt. Ich sehe die Ausgabe, die der Dienst gestartet hat. Diese nie funktioniert jedoch. Wenn ich zurück zum Computer spreche, hat der Dienst nicht gestartet.

Leider kann ich Linux nicht benutzen - ich habe keine Kontrolle über diese Maschinen.

Irgendwelche Ideen, warum ein manuell ausgeführtes SSH funktioniert, aber das Skript nicht?

Danke phil

    
phil swenson 26.12.2012, 18:00
quelle

1 Antwort

2

Ich habe es in Pry ausprobiert und zwei Probleme gefunden:

  1. HOST ist nicht definiert, es sollte host sein, da dies die Variable ist, die an den Block übergeben wird.
  2. SSH.start erwartet, dass die Parameter STRING class sind, fügen Sie also .to_s wie unten angegeben hinzu.

Außerdem habe ich es auf das idiomatische Ruby-Muster von do...end umgestellt, wenn ein Block eine Zeile überschreitet.

%Vor%

Ich habe das in Pry getestet und es funktioniert jetzt. Ich hoffe, das hilft.

    
ZPH 26.12.2012, 21:06
quelle

Tags und Links