2015年8月27日木曜日

コストを掛けずにサーバマシンの電源ON/OFFのスケジューリングを自動化する

こんにちは、渡辺です。


皆さんは、定期的なコンピュータの起動停止はどうされていますか?

数台だったらまだよいですが、コンピュータの台数が多くなるとこれらを手動で行う労力はバカになりませんね。
もちろん、数台であっても手動で行うには、深夜や早朝に時間を拘束されることになります。

みなさんも何かしらのツールを利用されている方が多いのではないかと思いますが、そのためだけに高価なツールを利用していたり、完全自動化となっていなかったりしませんか?

そこで、今回は、まだ自動化されていない方も、既に自動化されている方にも Wake On Lanを用いリモートからサーバマシンの電源ON/OFFを自動化する手順について書いていきます。

イメージはこんな感じです。



以下のとおり、大きく2つのパートに分けて書いていきます。

  1. 電源ON/OFFバッチの準備
  2. A-AUTOでの自動化手順


1. 電源ON/OFFバッチの準備

先ずは、電源ON・OFFのバッチファイルの準備です。


電源OFFバッチ
poweroff.batというファイル名で作成しておきます。

@echo off
echo ### Shutdown Start ###

set RC=99

if "%1"=="" (
  goto PARAM_INVALID
)
set NAME=%1
echo ### Shutdown Target = %NAME% ###


shutdown /m %NAME% /s

if not "%ERRORLEVEL%" == "0" (
  goto SHUTDOWN_FAILED
) else (
  set RC=0
  goto END
)

:PARAM_INVALID
echo ### parameter invalid.
set RC=4
goto END

:SHUTDOWN_FAILED
set RC=%ERRORLEVEL%
goto END

:END
echo ### Shutdown End rc=%RC% ###

exit %RC%



電源OFFは、Widnowsのshutdown を利用します。
上記バッチでは、自動化時に汎用性を持たせるため、電源をoffするコンピュータ名(またはIPアドレス)をパラメータで渡すようにしています。



電源ONバッチ
poweron.batというファイル名で作成しておきます。

@echo off
echo ### Power On START ###

set RC=99

if "%1"=="" (
  goto PARAM_INVALID
)
set PORT_NO=%1

if "%2"=="" (
  goto PARAM_INVALID
)
set IP=%2

if "%3"=="" (
  goto PARAM_INVALID
)
set SUBNET=%3

if "%4"=="" (
  goto PARAM_INVALID
)
set MAC_ADDR=%4

echo ### Power On Target: Port=%PORT_NO% Ip=%IP% SubNet=%SUBNET% MAC_Addr=%MAC_ADDR% ###

"C:\BSP\AUW\BIN\poweron.exe" -p=%PORT_NO% %IP% %SUBNET% %MAC_ADDR%


if not "%ERRORLEVEL%" == "0" (
  goto POWERON_FAILED
) else (
  set RC=0
  goto END
)

:PARAM_INVALID
echo ### parameter invalid.
set RC=4
goto END

:POWERON_FAILED
set RC=%ERRORLEVEL%
goto END

:END
echo ### Power On  END rc=%RC% ###
exit %RC%




電源ONは、上記サンプルでは自社作成した poweron.exe というツールを利用しています。

また、上記バッチでは、自動化時に汎用性を持たせるため、UDPのポート番号、IPアドレス、サブネットマスク、MACアドレスをパラメータで渡すようにしています。

電源ON用のフリーツールはいろいろとあるので、任意のツールをご利用いただければと思います。
ちなみに、フリーツールの使用が禁止されているお客様の場合、こちらからご連絡いただければ、弊社から提供に関してのご連絡をさせていただきますので、お気軽にご相談ください。



  • 上記バッチで電源ONするマシンのMACアドレス、IPアドレスなどを渡す必要がありますが、以下のコマンドで確認可能です。
     ipconfig /all
  • 電源ONするマシンは、有線LANで繋がれている必要があります
  • マジックパケットを送信するために、BIOSやデバイスマネージャにて設定する必要があります
    以下のサイトなどを参考に設定を行ってください
    http://www.atmarkit.co.jp/ait/articles/0602/25/news014.html


2. A-AUTOでの自動化手順

ここからは、準備したバッチファイルをA-AUTOで自動化する手順について記載します。


2.1 ジョブ実行ユーザIDの登録
電源OFFのジョブを実行するためには、電源をOFFするコンピュータの権限を持つユーザIDが必要です。
A-AUTOでは、実行するジョブの実行権限をジョブ実行ユーザIDを用いて実現しています。
ジョブ実行ユーザIDは、ドメイン、ユーザID、パスワードのアカウント情報を管理するために用いる間接名です。
このジョブ実行ユーザIDは、”ユーザ情報定義ファイル”というパスワードを暗号化したファイルで管理します。

※ ここでは、”ジョブ実行ユーザID”を管理する”ユーザ情報定義ファイル”の作成手順の説明は割愛します。
”ユーザ情報定義ファイル”の作成手順については、リンク 『ジョブ実行ユーザ切り替え機能を利用するためには』を参照してください。


なお、以降の説明を進めるうえで、ここでは、ジョブ実行ユーザIDをADMINとして説明します。



2.2 実行ジョブの登録
先ずは、実行するジョブならびに、起動条件を登録します。

2.2.1 電源OFFジョブの登録
ここでは、25時(AM1:00)に電源OFFするジョブを登録します。

① メインウィンドウから[業務定義]のAUTO63をクリックし、[マスタ管理]ウィンドウを表示します。

② メニューで[ネットワーク]を選択し、[ネットワーク定義一覧]を表示し、[新規作成]ボタンをクリックします。

③ 以下のように[ネットワーク属性1]タブで、ネットワークID(任意)、スタート時刻、ジョブ並行処理にチェックを指定します。※時刻はお客様の用途に合わせて設定してください。


  ※ ネットワークはA-AUTOの処理の単位です
  ※ 1つのネットワークに複数の電源停止ジョブを登録する場合にジョブが並行して実行されるようになります


④ 次に[ジョブ]タブを開き、[新規作成]ボタンをクリックします。

⑤ 以下のようにジョブ情報を登録します。  
  

  ジョブ番号         : 任意の3桁数字
  ジョブコード        : 事前に作成したバッチファイル名POWEROFFを指定
  マックスリターンコード :1を指定
  ”ノーマル実行時のジョブ引き渡しパラメータ”と”リラン実行時のパラメータ” :
       電源をOFFするコンピュータのIPアドレス、またはコンピュータ名を指定します。
  ジョブ実行ユーザID   : 制御対象のコンピュータで権限を持つユーザIDに関連付いたジョブ実行ユーザIDを指定します。

⑥ 適用ボタンを押してジョブ情報を保存します。
  保存すると一覧に登録したジョブjが追加されます。
⑦ 画面左上の[適用]ボタンをクリックして、ネットワークマスタを保存します。


2.2.2 電源ONジョブの登録
ここでは、AM7:00に電源ONするジョブを登録します。

① 再度[新規作成]ボタンをクリックします。

② 以下のように[ネットワーク属性1]タブで、ネットワークID(任意)、スタート時刻、ジョブ並行処理にチェックを指定します。
③ 次に[ジョブ]タブを開き、[新規作成]ボタンをクリックします。

④ 以下のようにジョブ情報を登録します。  

  ジョブ番号         : 任意の3桁数字
  ジョブコード        : 事前に作成したバッチファイル名POWERONを指定
  マックスリターンコード :1を指定
  ”ノーマル実行時のジョブ引き渡しパラメータ”と”リラン実行時のパラメータ” :
    使用するポート番号 電源ONするコンピュータのIPアドレス サブネットマスク MACアドレスの順番に間に半角ブランクを入れて指定します。

⑤ 適用ボタンを押してジョブ情報を保存します。その後、画面左上の[適用]ボタンをクリックして、ネットワークマスタを保存します。

2.3 カレンダーの登録
ここでは、土日+祝日を休みとするカレンダーを登録します。


① [マスタ管理]ウィンドウのメニューで[ホリデー]を選択し、[ホリデー定義一覧]を表示し、
  [新規作成]ボタンをクリックします。

③ 以下のように[ホリデー詳細]タブで、ネットワークID(任意)、スタート時刻、ジョブ並行処理
  にチェックを指定します。


土曜日と日曜日の定例的な休みは、週間定休日で指定します。
また、振替を有効にするをチェックします。(祝日が日曜日と重なったときに翌日を休日にする指定)

④ [休日設定]タブで年間休日を選択します。
  ハッピーマンデーには、対応していませんので、ハッピーマンデー以外の休日を選択します。

⑤ ハッピーマンデーやシルバーウィークなどの休日を画面右側のカレンダーの日付をダブルクリックして、個別に休日設定を行います。
※ 背景が赤色が休日を表しています
※ 上記画面では、9月21日、22日、23日を休日に設定しています。


⑥ 休日設定が終わったら、画面左上の[適用]ボタンをクリックして保存します。



2.4 スケジュール情報の登録
ここでは、電源ON/OFFをいつ行うかスケジュール情報の登録を行います。
サンプルとして、2種類のスケジュール登録を行います。自動化のサイクルなどにより登録は1つだけでも良いかと思います。
スケジュール設定の詳細は使い方ガイドを参照してください。


2.4.1  4ヶ月毎に定期的に実行する

ここでは、2月、6月、10月の第二金曜日に実行させるスケジュール情報を登録します。

① [マスタ管理]ウィンドウのメニューで[スケジュール]を選択し、[スケジュール定義一覧]を表示し、[新規作成]ボタンをクリックします。

② 以下のように[スケジュール]タブの項目を指定します。
  ホリデーID         : 2.3で登録したカレンダー(ホリデーID)を選択します
  処理パターン       : 「カレンダー」     を選択します
  処理サイクル       : 「四ヶ月毎」       を選択します
  シフトパターン      : 「前日にずらす」 を選択します

※ シフトパターンの指定により第2金曜日がカレンダー上休日であった場合、処理日を前日に自動でずらすことができます


③ [標準処理日]タブを選択し、[新規作成]ボタンをクリックします。

④ 新規作成のフィールドで、処理を開始する起点となる日付を指定します。
  今回は、2月、6月、10月と4ヶ月毎に処理をさせることとなるので、2015年10月第2週目の金曜日を起点として登録します。

  標準処理日の形式   : 「年/月/週/曜日」  を選択します
  標準処理日        : 「2015年」、「10月」、「第2週目」、「金曜日」を選択します



⑤ 適用ボタンをクリックして標準処理日を保存します。
  保存されると上部のリストに標準処理日が表示されます。
  また、右側のカレンダーで、登録したスケジュール情報によっていつが処理日になるかを
  確認することができます。
⑥ 上部の[適用]ボタンをクリックしてスケジュール情報を保存します。


2.4.2 休みでないすべての日に実行する

ここでは、カレンダー上休みでないすべての日に実行させるスケジュール情報を登録します。

① [スケジュール定義一覧]の[新規作成]ボタンをクリックします。

② 以下のように[スケジュール]タブの項目を指定します。
ホリデーID         : 2.3で登録したカレンダー(ホリデーID)を選択します
  処理パターン       : 「カレンダー」   を選択します
  処理サイクル       : 「毎日」       を選択します
  シフトパターン      : 「処理しない」  を選択します

※ シフトパターンの指定により、カレンダー上休日には処理しないように設定させることができます


③ [標準処理日]タブを選択し、[新規作成]ボタンをクリックします。

④ 新規作成のフィールドで、処理を開始する起点となる日付を指定します。
  今回は、8月26日を起点として登録します。

  標準処理日の形式   : 「年/月/日」  を選択します
  標準処理日        : 「2015年」、「8月」、「26日」 を選択します

⑤ 適用ボタンをクリックして標準処理日を保存します。
  保存されると上部のリストに標準処理日が表示されます。
  また、右側のカレンダーで、登録したスケジュール情報によっていつが処理日になるかを
  確認することができます。
⑥ 上部の[適用]ボタンをクリックしてスケジュール情報を保存します。


これで、スケジュールの情報が登録できました。



2.5 電源ON/OFFのスケジュールを自動作成する
次に、ジョブ(ネットワーク)とスケジュール情報の関連付けを行い、スケジュールを自動作成します。
POWEROFFを4ヶ月毎のスケジュール、POWERONを日次のスケジュールとして登録する例で

① [マスタ管理]ウィンドウのメニューで[ネットワークスケジュール]を選択し、[ネットワークスケジュール]を表示し、画面右上の[表示切替]アイコンをクリックします。




② 表示を切り替えると2.1で登録したネットワーク POWEROFF、POWERONが表示されるので、POWEROFFをクリックします。

③ ネットワークPOWEROFFの選択済みスケジュールににスケジュールさせたいスケジュールIDを移動します。
※ スケジュールIDを選択すると右側のカレンダーにいつスケジュールされるかを事前に確認することが出来ます。



④ 左上の[適用]ボタンをクリックして、ネットワークスケジュールを作成します。

⑤ 同様にPOWERONもネットワークスケジュールを作成します。

⑥ これで、1年分のスケジュールが自動で作成できました。
  それぞれ、スケジュールを確認することができます。
  ここでの例では、ネットワークID POWERONがカレンダー上休みでない日にスケジュールされていることが確認できます。






このように、無料ツールを利用したマシンの電源ON/OFFの自動化が可能です。

是非、A-AUTO 50をダウンロードして、自動化を試してみてください。


以上


0 件のコメント:

コメントを投稿