私はJenkins Slavesを実行する13のWindowsサーバを持っています。なんらかの理由(Windowsの更新?)では、Jenkinsスレーブは定期的に動作を停止し、Jenkins Slaveサービスを再起動する必要があります。私は手動でSSH(cygwinのSSHサーバが実行されている)のマシンに私は単純に入力した場合:Rubyを使ってWindowsに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が動作するのですが、スクリプトではないのですか?
おかげ フィル
ルビーが必要なのですが、powershellスクリプトのようなものがおそらくもっとうまくいくでしょう。この種の管理タスク用に設計されています – Egryan