我有一個運行Jenkins從站的13個Windows服務器。由於某些原因(Windows更新?),Jenkins奴隸定期退出工作,Jenkins奴隸服務需要重新啓動。如果我手動SSH到機器(cygwin的SSH服務器是否正在運行),我只需鍵入:使用Ruby自動化SSH到Windows
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工作的想法,但腳本不?
感謝 菲爾
是否需要ruby,導致類似powershell腳本的東西可能會更好地工作有它被設計用於這些類型的管理任務 – Egryan