Jenkins スレーブを実行している 13 台の Windows サーバーがあります。何らかの理由 (Windows の更新?) で、Jenkins スレーブが定期的に動作を停止し、Jenkins スレーブ サービスを再起動する必要があります。マシンに手動で 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
}
スクリプトはすべてのマシンで実行され、サービスが開始されたという出力が表示されます。ただし、これは決して機能しません。マシンに SSH で戻ると、サービスは開始されていません。
残念ながら、私は Linux を使用できません。これらのマシンを制御することはできません。
手動で実行された SSH が機能するのに、スクリプトが機能しない理由についてのアイデアはありますか?
ありがとうフィル