Automatizando o SSH para janelas com Ruby
Eu tenho 13 servidores windows executando Jenkins Slaves. Por alguma razão (atualizações do Windows?), Os escravos Jenkins periodicamente param de trabalhar e o serviço Jenkins Slave precisa ser reiniciado. Se eu manualmente SSH para as máquinas (cygwin ssh servidor está em execução) eu simplesmente digite:
net stop "Jenkins Slave"
net start "Jenkins Slave"
e isso (quase) sempre resolve o problema.
Então eu escrevi um script Ruby para automatizar isso.
Aqui está:
#!/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
}
O script é executado em todas as máquinas, vejo a saída que o serviço foi iniciado. No entanto, issoNunca trabalho. Quando eu ssh de volta para a máquina, o serviço não foi iniciado.
Infelizmente, não posso usar o Linux - não estou no controle dessas máquinas.
Alguma idéia de por que um SSH executado manualmente funciona, mas o script não funciona?
Obrigado phil