スケジューラの設定

この章では、Cisco NX-OS デバイス上でスケジューラを設定する方法について説明します。

この章は、次の項で構成されています。

スケジューラについて

スケジューラを使用すると、次のようなメンテナンス作業のタイムテーブルを定義し、設定することができます。

  • Quality of Service(QoS)ポリシーの変更

  • データのバックアップ

  • 設定の保存

ジョブは、定期的な作業を定義する単一または複数のコマンドで構成されています。ジョブは、1 回だけ、または定期的な間隔でスケジューリングすることができます。

スケジューラでは、ジョブと、そのタイムテーブルを次のように定義できます。

  • ジョブ:コマンド リストとして定義され、特定のスケジュールに従って実行される定期的なタスク。
  • スケジュール:ジョブを実行するタイムテーブル1 つのスケジュールに複数のジョブを割り当てることができます。1 つのスケジュールは、定期的、または 1 回だけ実行するように定義されます。
    • 定期モード:ジョブを削除するまで、ジョブの実行が定期的な間隔で繰り返されます。次のタイプの定期的な間隔を設定できます。
      • Daily:ジョブは 1 日 1 回実行されます。
      • Weekly:ジョブは毎週 1 回実行されます。
      • Monthly:ジョブは毎月 1 回実行されます。
      • Delta:ジョブは、指定した時間に開始され、以後、指定した間隔(days:hours:minutes)で実行されます。
    • 1 回限定モード:ジョブは、指定した時間に 1 回だけ実行されます。

リモート ユーザ認証

ジョブの開始前に、スケジューラはジョブを作成したユーザを認証します。リモート認証で得たユーザ クレデンシャルは短時間しか保有されないため、スケジューリングされたジョブをサポートできません。ジョブを作成するユーザの認証パスワードをローカルで設定する必要があります。これらのパスワードは、スケジューラのコンフィギュレーションに含まれ、ローカル設定のユーザとは見なされません。

ジョブを開始する前に、スケジューラはローカル パスワードとリモート認証サーバに保存されたパスワードを照合します。

ログ

スケジューラはジョブ出力を含むログファイルを管理します。ジョブ出力のサイズがログ ファイルのサイズより大きい場合、出力内容は切り捨てられます。

高可用性

スケジューリングされたジョブは、スーパバイザのスイッチオーバーまたはソフトウェアのリロード後も使用可能です。

スケジューラの前提条件

スケジューラの前提条件は次のとおりです。

  • 条件付き機能をイネーブルにしてからでなければ、ジョブでそれらの機能を設定できません。

  • ライセンスの必要な機能をジョブで設定するには、各機能の有効なライセンスをインストールしておく必要があります。

  • スケジュールリングされたジョブを設定するには、network-admin のユーザ権限が必要です。

スケジューラの注意事項および制約事項

スケジューラに関する設定時の注意事項および制約事項は、次のとおりです。

  • ジョブの実行中に次のいずれかの状況が発生した場合、スケジューラは失敗する可能性があります。

    • 時刻が設定されていることを確認します。スケジューラはデフォルトのタイムテーブルを適用しません。スケジュールを作成し、ジョブを割り当てても、時刻を設定しなければ、ジョブは開始しません。

    • ジョブは開始されると非インタラクティブ方式で実行されるため、ジョブの定義中、インタラクティブなコマンドや中断を伴うコマンド(例:copy bootflash: file ftp: URI write erase、その他類似のコマンド)が指定されていないことを確認してください。

  • スケジューラは、スケジュール モード設定で time コマンドの繰り返しオプションを使用して、任意のスケジュールの過去の start_time を承認します。次に、入力された開始時刻が過去であることを示す警告がスローされます。任意のスケジュールの start_time は、リブート後、および以前に保存された設定を再適用した後でも、最初と同じままです。

  • Cisco NX-OS リリース 9.3(5) 以降では、スケジューラ ジョブ設定 CLI の出力に 2 番目のスペースが含まれています。

    以前は、出力にはジョブ設定 CLI の前に 1 つのスペースしかありませんでした。

    scheduler job name show_fds.
     show clock >> bootflash:show_fds
    ^ (single space)

    ジョブ設定 CLI の前に 2 つのスペースがあります。

    scheduler job name show_fds.
      show clock >> bootflash:show_fds
    ^^ (two spaces)

    設定の置換、ISSU、リロードなどの NX-OSソフトウェアのスケジューラ機能には影響しません。ただし、スケジューラ コンポーネント設定を読み取るための show run コマンドの出力を読み取るためにスクリプトを使用する場合は、スクリプト内のロジックを更新して、余分なスペースを確保する必要があります。

スケジューラのデフォルト設定

この表は、スケジューラのデフォルト設定を示します。

パラメータ デフォルト
スケジューラの状態 ディセーブル
ログ ファイル サイズ 16 KB

スケジューラの設定

スケジューラの有効化または無効化

ジョブを設定してスケジュールできるようにスケジューラ機能を有効にすることができ、または、スケジューラを有効にした後にスケジューラ機能を無効にすることもできます。

手順

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

グローバル設定モードを開始します。

ステップ 2

[no] feature scheduler

例:

switch(config)# feature scheduler

スケジューラを有効または無効にします。

ステップ 3

(任意) show scheduler config

例:

switch(config)# show scheduler config
config terminal
feature scheduler
scheduler logfile size 16
end
(任意)

スケジューラ設定を表示します。

ステップ 4

(任意) copy running-config startup-config

例:

switch(config)# copy running-config startup-config
(任意)

実行コンフィギュレーションを、スタートアップ コンフィギュレーションにコピーします。

スケジューラ ログ ファイル サイズの定義

ジョブ、スケジュール、およびジョブ出力をキャプチャするログ ファイルのサイズを設定できます。

手順

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

グローバル コンフィギュレーション モードを開始します。

ステップ 2

scheduler logfile size value

例:

switch(config)# scheduler logfile size 1024

スケジューラ ログ ファイル サイズをキロバイト(KB)で定義します。範囲は 16 ~ 1024 です。デフォルトは 16 です。

(注)  

 
ジョブ出力のサイズがログ ファイルのサイズより大きい場合、出力内容は切り捨てられます。

ステップ 3

(任意) copy running-config startup-config

例:

switch(config)# copy running-config startup-config
(任意)

実行コンフィギュレーションを、スタートアップ コンフィギュレーションにコピーします。

リモート ユーザ認証の設定

ジョブの設定およびスケジューリングを行うユーザにリモート認証を使用するように、スケジューラを設定できます。


(注)  


リモート ユーザは、ジョブを作成および設定する前に、クリア テキスト パスワードを使用して認証する必要があります。

(注)  


show running-config コマンドの出力では、リモート ユーザ パスワードは常に暗号化された状態で表示されます。コマンドの暗号化オプション(7 )は、ASCII デバイス設定をサポートします。

手順

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

グローバル コンフィギュレーション モードを開始します

ステップ 2

scheduler aaa-authentication password [0 | 7] password

例:

switch(config)# scheduler aaa-authentication password X12y34Z56a

現在ログインしているユーザのクリアテキスト パスワードを設定します。

ステップ 3

scheduler aaa-authentication username name password [0 | 7] password

例:

switch(config)# scheduler aaa-authentication username newuser password Z98y76X54b

リモート ユーザのクリア テキスト パスワードを設定します。

ステップ 4

(任意) show running-config | include “scheduler aaa-authentication”

例:

switch(config)# show running-config | include “scheduler aaa-authentication”
(任意)

スケジューラのパスワード情報を表示します。

ステップ 5

(任意) copy running-config startup-config

例:

switch(config)# copy running-config startup-config
(任意)

実行コンフィギュレーションを、スタートアップ コンフィギュレーションにコピーします。

ジョブの定義

ジョブを定義して、ジョブ名とコマンド シーケンスを指定することができます。


注意    


一旦ジョブを定義すると、コマンドの変更、削除はできません。ジョブを変更するには、そのジョブを削除して新しいジョブを作成する必要があります。

手順

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

グローバル コンフィギュレーション モードを開始します。

ステップ 2

scheduler job name string

例:

switch(config)# scheduler job name backup-cfg
switch(config-job)

ジョブを作成し、ジョブ コンフィギュレーション モードを開始します。

「backup-cfg」という名前のスケジューラ ジョブを作成する例を示します。

ステップ 3

command1 ;[command2 ;command3 ;...]

例:

switch(config-job)# copy running-config 
tftp://1.2.3.4/$(SWITCHNAME)-cfg.$(TIMESTAMP) vrf management
switch(config-job)#

特定のジョブに対応するコマンド シーケンスを定義します。複数のコマンドは、スペースとセミコロンで(「 ;」のように)区切る必要があります。

この例では、実行コンフィギュレーションをブートフラッシュ内のファイルに保存するスケジュール ジョブを作成しています。その後ジョブはブートフラッシュから TFTP サーバにファイルをコピーし、現在のタイムスタンプとスイッチ名を使用してファイル名を作成します。

ステップ 4

(任意) show scheduler job [name name]

例:

switch(config-job)# show scheduler job
(任意)

ジョブ情報を表示します。

ステップ 5

(任意) copy running-config startup-config

例:

switch(config)# copy running-config startup-config
(任意)

実行コンフィギュレーションを、スタートアップ コンフィギュレーションにコピーします。

ジョブの削除

スケジューラからジョブを削除できます。

手順

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

グローバル コンフィギュレーション モードを開始します。

ステップ 2

no scheduler job name string

例:

switch(config)# no scheduler job name configsave
switch(config-job)

特定のジョブおよびそこで定義されたすべてのコマンドを削除します。

ステップ 3

(任意) show scheduler job [name name]

例:

switch(config-job)# show scheduler job name configsave
(任意)

ジョブ情報を表示します。

ステップ 4

(任意) copy running-config startup-config

例:

switch(config)# copy running-config startup-config
(任意)

実行コンフィギュレーションを、スタートアップ コンフィギュレーションにコピーします。

タイムテーブルの定義

1 つまたは複数のジョブで使用するタイムテーブルをスケジューラで定義できます。

time コマンドで時刻を設定しない場合は、スケジューラは現在の時刻を使用します。たとえば、現在の時刻が 2013 年 3 月 24 日の 22 時 00 分である場合、ジョブは次のように開始されます。

  • スケジューラは、time start 23:00 repeat 4:00:00 コマンドの開始時刻が、2013 年 3 月 24 日 23 時 00 分であると見なします。
  • スケジューラは、time daily 55 コマンドの開始時刻が、毎日 22 時 55 分であると見なします。
  • スケジューラは、time weekly 23:00 コマンドの開始時刻が、毎週金曜日の 23 時 00 分であると見なします。
  • スケジューラは、time monthly 23:00 コマンドの開始時刻が、毎月 24 日の 23 時 00 分であると見なします。

(注)  


スケジューラは、1 つ前のジョブが完了しない限り、次のジョブを開始しません。たとえば、1 分間隔で実行するジョブを 22 時 00 分に開始するようジョブをスケジューリングしたが、ジョブを完了するには 2 分間必要である場合、ジョブは次のように実行されます。スケジューラは 22 時 00 分に最初のジョブを開始し、22 時 02 分に完了します。次に 1 分間待機し、22 時 03 分に次のジョブを開始します。

手順

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

グローバル コンフィギュレーション モードを開始します。

ステップ 2

scheduler schedule name string

例:

switch(config)# scheduler schedule name weekendbackupqos
switch(config-schedule)#

スケジュールを作成し、スケジュール コンフィギュレーション モードを開始します。

ステップ 3

job name string

例:

switch(config-schedule)# job name offpeakZoning

このスケジュールにジョブを関連付けます。1 つのスケジュールに複数のジョブを追加できます。

ステップ 4

time daily time

例:

switch(config-schedule)# time daily 23:00

ジョブが毎日 HH:MM の形式で指定された時刻に開始することを意味します。

ステップ 5

time weekly [[dow:]HH:]MM

例:

switch(config-schedule)# time weekly Sun:23:00

ジョブが週の指定された曜日に開始することを意味します。

曜日(dow)は次のいずれかの方法で指定されます。

  • 曜日を表す整数。たとえば 1 = 日曜日、2 = 月曜日。

  • 曜日の省略形。たとえば Sun = Sunday。

引数全体の最大長は 10 です。

ステップ 6

time monthly [[dm:]HH:]MM

例:

switch(config-schedule)# time monthly 28:23:00

ジョブが月の特定の日(dm)に開始することを意味します。29、30 または 31 のいずれかを指定した場合、そのジョブは各月の最終日に開始されます。

ステップ 7

time start {now repeat repeat-interval | delta-time [repeat repeat-interval]}

例:

switch(config-schedule)# time start now repeat 48:00

ジョブが定期的に開始することを意味します。

start-time の形式は [[[[yyyy:]mmm:]dd:]HH]:MM です。

  • delta-time :スケジュールの設定後、ジョブの開始までの待機時間を指定します。

  • now :ジョブを今すぐ開始するよう指定します。

  • repeat repeat-interval :ジョブを反復する回数を指定します。

この例では、ただちにジョブが開始され、48 時間間隔で反復されます。

ステップ 8

(任意) show scheduler config

例:

switch(config)# show scheduler config
(任意)

スケジューラ設定を表示します。

ステップ 9

(任意) copy running-config startup-config

例:

switch(config)# copy running-config startup-config
(任意)

実行コンフィギュレーションを、スタートアップ コンフィギュレーションにコピーします。

スケジューラ ログ ファイルの消去

スケジューラ ログ ファイルを消去できます。

手順

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

グローバル コンフィギュレーション モードを開始します

ステップ 2

clear scheduler logfile

例:

switch(config)# clear scheduler
logfile

スケジューラ ログ ファイルを消去します。

スケジューラの設定確認

スケジューラの設定情報を表示するには、次のタスクのいずれかを行います。

コマンド 目的
show scheduler config スケジューラ設定を表示します。
show scheduler job [name string] 設定されているジョブを表示します。
show scheduler logfile スケジューラ ログ ファイルの内容を表示します。
show scheduler schedule [name string] 設定されているスケジュールを表示します。

スケジューラの設定例

スケジューラ ジョブの作成

この例では、実行コンフィギュレーションをブートフラッシュ内のファイルに保存するスケジュール ジョブを作成する方法を示します。このジョブは、その後で、ブートフラッシュから TFTP サーバにファイルをコピーします(現在のタイムスタンプとスイッチ名を使用してファイル名を作成します)。

switch# configure terminal
switch(config)# scheduler job name backup-cfg
switch(config-job)# copy running-config 
tftp://1.2.3.4/$(SWITCHNAME)-cfg.$(TIMESTAMP) vrf management
switch(config-job)# end
switch(config)#

スケジューラ ジョブのスケジューリング

次に、backup-cfg という名前のスケジューラ ジョブを、毎日午前 1 時に実行するようスケジューリングする例を示します。

switch# configure terminal
switch(config)# scheduler schedule name daily
switch(config-if)# job name backup-cfg
switch(config-if)# time daily 1:00
switch(config-if)# end
switch(config)#

ジョブ スケジュールの表示

次に、ジョブ スケジュールを表示する例を示します。

switch# show scheduler schedule
Schedule Name : daily
---------------------------
User Name : admin
Schedule Type : Run every day at 1 Hrs 00 Mins
Last Execution Time : Fri Jan 2 1:00:00 2013
Last Completion Time: Fri Jan 2 1:00:01 2013
Execution count : 2
-----------------------------------------------
Job Name Last Execution Status
-----------------------------------------------
back-cfg Success (0)
switch#

スケジューラ ジョブの実行結果の表示

次に、スケジューラによって実行されたスケジューラ ジョブの結果を表示する例を示します。

switch# show scheduler logfile
Job Name : back-cfg Job Status: Failed (1)
Schedule Name : daily User Name : admin
Completion time: Fri Jan 1 1:00:01 2013
--------------------------------- Job Output ---------------------------------
`cli var name timestamp 2013-01-01-01.00.00`
`copy running-config bootflash:/$(HOSTNAME)-cfg.$(timestamp)`
`copy bootflash:/switch-cfg.2013-01-01-01.00.00 tftp://1.2.3.4/ vrf management `
copy: cannot access file '/bootflash/switch-cfg.2013-01-01-01.00.00'
==============================================================================
Job Name : back-cfg Job Status: Success (0)
Schedule Name : daily User Name : admin
Completion time: Fri Jan 2 1:00:01 2013
--------------------------------- Job Output ---------------------------------
`cli var name timestamp 2013-01-02-01.00.00`
`copy running-config bootflash:/switch-cfg.2013-01-02-01.00.00`
`copy bootflash:/switch-cfg.2013--01-02-01.00.00 tftp://1.2.3.4/ vrf management `
Connection to Server Established.
[ ] 0.50KBTrying to connect to tftp server......
[###### ] 24.50KB
TFTP put operation was successful
==============================================================================
switch#