Possiedo 13 server Windows che eseguono Jenkins Slaves. Per qualche ragione (aggiornamenti di Windows?), Gli schiavi di Jenkins abbandonano periodicamente il lavoro e il servizio Jenkins Slave deve essere riavviato. Se io SSH manualmente alle macchine (server SSH cygwin è in esecuzione) digito semplicemente:Automazione di SSH a Windows con Ruby
net stop "Jenkins Slave"
net start "Jenkins Slave"
e questo (quasi) sempre risolve il problema.
Così ho scritto uno script Ruby per automatizzare questo.
Ecco è:
#!/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
}
lo script viene eseguito su tutte le macchine, vedo in uscita che il servizio è stato avviato. Tuttavia, questo mai funziona. Quando ritorna alla macchina, il servizio non è stato avviato.
Purtroppo non posso usare Linux, non ho il controllo di queste macchine.
Qualche idea sul perché un SSH eseguito manualmente funziona, ma lo script no?
Grazie Phil
È richiesto ruby, perché qualcosa come lo script di PowerShell potrebbe funzionare meglio se è stato progettato per questo tipo di attività di amministrazione – Egryan