8

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 が機能するのに、スクリプトが機能しない理由についてのアイデアはありますか?

ありがとうフィル

4

1 に答える 1