Mam 13 serwerów Windows z systemem Jenkins Slaves. Z jakiegoś powodu (aktualizacje systemu Windows?), Niewolnicy Jenkins okresowo przestają działać, a usługa Jenkins Slave musi zostać ponownie uruchomiona. Jeśli ręcznie ssh do maszyn (serwer Cygwin ssh działa) I wystarczy wpisać:Automatyzacja SSH dla okien z Ruby
net stop "Jenkins Slave"
net start "Jenkins Slave"
a to (prawie) zawsze rozwiązuje problem.
Więc napisałem skrypt w języku Ruby, aby zautomatyzować to.
Oto jest:
#!/usr/bin/env ruby
require 'rubygems'
require 'net/ssh'
USER = 'Administrator'
PASS = 'PASSWORD'
hosts = [:breckenridge, :carbondale, :crestone, :denali, :gunnison, :sneffels, "mammoth", "whitney", "snowmass", "firestone", "avon", :grizzly, :silverton]
hosts.each {|host|
puts "SSHing #{host} ..."
Net::SSH.start(HOST, USER, :password => PASS) do |ssh|
puts ssh.exec!('net stop "Jenkins Slave"')
puts ssh.exec!('net start "Jenkins Slave"')
puts "Logging out..."
end
}
Skrypt wykonywany na wszystkich maszynach, widzę wyjścia, że usługa została uruchomiona. Jednak ten nigdy nie działa pod. Kiedy wracam do maszyny, usługa nie została uruchomiona.
Niestety, nie mogę używać Linuksa - nie kontroluję tych maszyn.
Wszelkie pomysły na temat, dlaczego działa ręcznie wykonany SSH, ale skrypt nie działa?
Dzięki Phil
Czy wymagany jest ruby, bo coś w rodzaju skryptu PowerShell prawdopodobnie działałoby lepiej, gdyby zostało zaprojektowane dla tego rodzaju zadania administratora – Egryan