Cisco IOS システム管理 – kron(定期実行タスク)の設定

スポンサーリンク

kronはCisco IOSにて定期実行タスクを実行する機能です。LinuxのcronやWindowsのタスクスケジューラーに相当する機能です。

コマンド一覧

このシナリオで重要なコマンド一覧は以下の通りです。

Router(config)# kron policy-list <policy_name>
Router(config-kron-policy)# cli <command>
Router(config)# kron occurrence <occurrence> [{ at <hh:mm> | in <hh:mm> }] [{ recurring | oneshot }]
Router(config-kron-occurrence)# policy-list <command>

構成図

以下の構成で動作確認を行います。Dynamips上のR1とHost OSのLoopback Adapterを接続します。また、Host OSではTFTP Serverを起動させ、R2はDHCP Serverとして動作させます。


 TFTP Server                         DHCP Server
         Lo0      e0/1      e0/0    e0/1
 +--------+.101  .1+--------+dhcp  .2+--------+
 |  Host  +--------+   R1   +--------+   R2   |
 +--------+        +--------+        +--------+
        192.168.1.0/24    192.168.12.0/24

 R1 Loopback0     R2 Loopback0     R3 Loopback0
 10.1.1.1/32      10.2.2.2/32      10.3.3.3/32
 [R2]
ip dhcp excluded-address 192.168.12.2 192.168.12.254
!
ip dhcp pool VLAN12
   network 192.168.12.0 255.255.255.0
   default-router 192.168.12.2 

設定全文は下記ファイルです。詳細設定は下記を参照ください。

R1
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Ethernet0/0
 ip address dhcp
 half-duplex
!
interface Ethernet0/1
 ip address 192.168.1.1 255.255.255.0
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
R2
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R2
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
no ip dhcp use vrf connected
ip dhcp excluded-address 192.168.12.2 192.168.12.254
!
ip dhcp pool VLAN12
   network 192.168.12.0 255.255.255.0
   default-router 192.168.12.2 
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.2.2.2 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.23.2 255.255.255.0
 half-duplex
!
interface Ethernet0/1
 ip address 192.168.12.2 255.255.255.0
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
router ospf 1
 log-adjacency-changes
 passive-interface default
 no passive-interface Ethernet0/0
 network 0.0.0.0 255.255.255.255 area 0
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end

kron

仕様説明

以下要領で定期実行したいコマンドを定義します。

Router(config)# kron policy-list <policy_name>
Router(config-kron-policy)# cli <command>

以下要領でコマンドを実行する時間を定義します。atで実行時刻を指定し、inで実行間隔を定義します。recurringを指定すると何度も実行するようになり、oneshotを指定すると1回のみ実行します。

Router(config)# kron occurrence <occurrence> [{ at <hh:mm> | in <hh:mm> }] [{ recurring | oneshot }]
Router(config-kron-occurrence)# policy-list <command>

時刻指定

21:05にrunnning-configをTFTP Serverにバックアップする設定を試みます。まず、時刻を設定します。

 [R1]
clock set 21:00:00 Nov 21 2012

次にバックアップコマンドを定義します。なお、KronやEEMではcopyコマンドは使用不可である事に注意して下さい。

 [R1]
kron policy-list CMD_COPY_RUN
 cli show running-config | redirect tftp://192.168.1.101/r1.cfg
kron occurrence CRON_COPY_RUN at 21:05 recurring
 policy-list CMD_COPY_RUN

以下showコマンドにより、実行予定のコマンドを確認します。

 [R1]
R1#show kron schedule
Kron Occurrence Schedule
CRON_COPY_RUN inactive, will run again in 0 days 00:00:08 at 21:05 on

R1#

以下debugコマンドにより、Kronが想定通りに実行された事を確認します。

 [R1]
R1#debug kron all
All kron debug flags are on

R1#
R1#
Nov 21 21:05:37.547: Major 1, Minor 0
Nov 21 21:05:37.547: Timer Event CRON_COPY_RUN
Nov 21 21:05:37.551: Kron delay for next CRON_COPY_RUN 86400000
Nov 21 21:05:37.555: Call parse_cmd 'show running-config | redirect tftp://192.168.1.101/r1.cfg'
Nov 21 21:05:38.907: Kron CLI return 0
'
**CLI 'show running-config | redirect tftp://192.168.1.101/r1.cfg':
!'
Nov 21 21:05:38.919: Major 4, Minor 7
Nov 21 21:05:38.919: Respond to end of CLI Process
R1#

実行間隔指定

2分間隔でDHCP requestを送信する設定を試みます。R1に以下設定を投入して下さい。

 [R1]
kron policy-list CMD_RENEW_DHCP
 cli renew dhcp Ethernet 0/0
kron occurrence CRON_RENEW_DHCP in 00:02 recurring
 policy-list CMD_RENEW_DHCP

R1, R2のそれぞれのdebugメッセージから2分間隔でDHCP requestが送信されている事を確認します。

 [R1]
R1#debug kron all
All kron debug flags are on

R1#
R1#
R1#
Nov 21 21:13:07.559: Major 1, Minor 0
Nov 21 21:13:07.559: Timer Event CRON_RENEW_DHCP
Nov 21 21:13:07.559: Kron delay for next CRON_RENEW_DHCP 120000
Nov 21 21:13:07.571: Call parse_cmd 'renew dhcp Ethernet 0/0'
Nov 21 21:13:07.583: Kron CLI return 0
''
Nov 21 21:13:07.591: Major 4, Minor 7
Nov 21 21:13:07.595: Respond to end of CLI Process
Nov 21 21:15:07.559: Major 1, Minor 0
Nov 21 21:15:07.559: Timer Event CRON_RENEW_DHCP
Nov 21 21:15:07.563: Kron delay for next CRON_RENEW_DHCP 120000
Nov 21 21:15:07.575: Call parse_cmd 'renew dhcp Ethernet 0/0'
Nov 21 21:15:07.587: Kron CLI return 0
''
Nov 21 21:15:07.595: Major 4, Minor 7
Nov 21 21:15:07.599: Respond to end of CLI Process
R1#

 [R2]
R2#debug ip dhcp server events 
DHCP server event debugging is on.
R2#
R2#
*Mar  1 00:28:01.531: DHCPD: Sending notification of ASSIGNMENT:
*Mar  1 00:28:01.535:  DHCPD: address 192.168.12.1 mask 255.255.255.0
*Mar  1 00:28:01.535:   DHCPD: htype 1 chaddr cc00.106c.0000
*Mar  1 00:28:01.539:   DHCPD: lease time remaining (secs) = 86400
*Mar  1 00:28:05.583: DHCPD: checking for expired leases.
R2#
*Mar  1 00:30:01.783: DHCPD: Sending notification of ASSIGNMENT:
*Mar  1 00:30:01.787:  DHCPD: address 192.168.12.1 mask 255.255.255.0
*Mar  1 00:30:01.791:   DHCPD: htype 1 chaddr cc00.106c.0000
*Mar  1 00:30:01.791:   DHCPD: lease time remaining (secs) = 86400
*Mar  1 00:30:05.583: DHCPD: checking for expired leases.
*Mar  1 00:32:01.891: DHCPD: Sending notification of ASSIGNMENT:
*Mar  1 00:32:01.891:  DHCPD: address 192.168.12.1 mask 255.255.255.0
*Mar  1 00:32:01.895:   DHCPD: htype 1 chaddr cc00.106c.0000
*Mar  1 00:32:01.895:   DHCPD: lease time remaining (secs) = 86400
*Mar  1 00:32:05.583: DHCPD: checking for expired leases.
R2#

Tips

対話形式コマンド

Kronは対話形式のコマンドと相性が悪いです。例えば、copyコマンドは転送先のホスト名などを対話形式で確認するので、対話コマンドとkronの併用は避けましょう。

動作確認として、R1に以下のようなcopyコマンドを用いたKronを登録します。

 [R1]
clock set 21:00:00 Nov 21 2012

no kron occurrence CRON_COPY_RUN at 21:05 recurring
no kron policy-list CMD_COPY_RUN

kron policy-list CMD_COPY_RUN
 cli copy running-config tftp://192.168.1.101/r1.cfg
kron occurrence CRON_COPY_RUN at 21:05 recurring
 policy-list CMD_COPY_RUN

debugメッセージを出力させると、copyに失敗している事が分かります。

 [R1]
R1#debug kron all
All kron debug flags are on

R1#
R1#
Nov 21 21:05:06.023: Major 1, Minor 0
Nov 21 21:05:06.023: Timer Event CRON_COPY_RUN
Nov 21 21:05:06.027: Kron delay for next CRON_COPY_RUN 86400000
Nov 21 21:05:06.039: Call parse_cmd 'copy running-config tftp://192.168.1.101/r1.cfg'
Nov 21 21:05:06.063: Kron CLI return 0
'
**CLI 'copy running-config tftp://192.168.1.101/r1.cfg':
Address or name of remote host [192.168.1.101]? ?Bad address or host name%Error parsing filename (Unknown error 0)'
Nov 21 21:05:06.075: Major 4, Minor 7
Nov 21 21:05:06.075: Respond to end of CLI Process
Nov 21 21:05:06.075: Forcing Removing Policy CMD_COPY_RUN
Nov 21 21:05:06.075: Removing Policy CMD_COPY_RUN
Nov 21 21:05:06.075:     Removing CLI 'copy running-config tftp://192.168.1.101/r1.cfg'
Nov 21 21:05:06.075: Done Removing Policy CMD_COPY_RUN
R1#
タイトルとURLをコピーしました