Автоматизация SSH для Windows с помощью Ruby
У меня есть 13 оконных серверов под управлением Jenkins Slaves. По какой-то причине (обновления Windows?), Подчиненные Jenkins периодически перестают работать, и служба Jenkins Slave должна быть перезапущена. Если я вручную использую SSH на компьютерах (запущен сервер Cygwin SSH), я просто набираю:
net stop "Jenkins Slave"
net start "Jenkins Slave"
и это (почти) всегда решает проблему.
Поэтому я написал скрипт Ruby для автоматизации этого.
Вот это:
#!/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
}
Сценарий выполняется на всех машинах, я вижу вывод, что служба запущена. Тем не менее, этоникогда работает. Когда я возвращаюсь к машине, служба не запускается.
К сожалению, я не могу использовать Linux - я не контролирую эти машины.
Любые идеи о том, почему работает SSH вручную, но сценарий не работает?
Спасибо фил