Junos PyEZ を使用した Junos デバイスの停止、再起動、またはシャットダウン
概要 Junos PyEZを使用して、Junosデバイスを即時または特定の時間に停止、再起動、またはシャットダウンします。
システムの停止、再起動、またはシャットダウンを実行する
Junos PyEZ jnpr.junos.utils.sw.SW
ユーティリティは、Junosデバイス上で以下の操作を実行できるメソッドを提供します。
即時のシステム停止、再起動、またはシャットダウン
オプションの遅延を伴う停止、再起動、またはシャットダウン操作
特定の日時にスケジュールされた停止、再起動、またはシャットダウン操作
表 1 に、使用可能なメソッドの概要を示します。デフォルトでは、メソッドはセットアップ内のすべてのルーティングエンジンまたはノードで要求された操作を直ちに実行します。後で操作を実行するための追加の引数を含めたり、影響を受けるルーティングエンジンまたはノードを指定することができます。
メソッド |
説明 |
---|---|
Junos OSソフトウェアを正常にシャットダウンするが、システム電源を維持する |
|
Junos OS ソフトウェアを正常にシャットダウンし、ルーティング エンジンの電源をオフにします。 |
|
Junos OSソフトウェアを再起動します。 |
Junos PyEZ リリース 2.1.0 以降、 および poweroff()
メソッドはreboot()
、デュアルルーティングエンジンまたはバーチャルシャーシ設定のすべてのルーティングエンジンで、要求された操作を実行します。以前のリリースでは、メソッドはアプリケーションが接続されているルーティング エンジンでのみ操作を実行します。
Junos PyEZアプリケーションがNETCONF-over-SSHセッションから、または管理インタフェースを介してTelnetセッションからデバイスを再起動すると、アプリケーションは再起動時にデバイスへの接続を失います。再起動後にアプリケーションへのアクセスが必要な場合は、Junos PyEZ open()
メソッドを発行して接続を復元する必要があります。
次のJunos PyEZアプリケーションは、SSH経由でJunosデバイスとNETCONFセッションを確立し、すべてのルーティングエンジンを直ちに再起動します。
#Python 3 from jnpr.junos import Device from jnpr.junos.utils.sw import SW from jnpr.junos.exception import ConnectError from getpass import getpass hostname = input("Device hostname: ") username = input("Device username: ") password = getpass("Device password: ") try: with Device(host=hostname, user=username, passwd=password) as dev: sw = SW(dev) print(sw.reboot()) except ConnectError as err: print (err)
デバイスのホスト名とユーザー資格情報の入力を求められます。システムの再起動を要求すると、接続されたルーティングエンジンに再起動メッセージとプロセスのプロセスIDが表示されます。
user1@server:~$ python3 junos-pyez-reboot.py Device hostname: dc1a.example.com Device username: user1 Device password: Shutdown NOW! [pid 2358]
次のJunos PyEZの例では、デバイス上のすべてのルーティングエンジンをシャットダウンし、即座に有効にします。
#Python 3 from jnpr.junos import Device from jnpr.junos.utils.sw import SW from jnpr.junos.exception import ConnectError from getpass import getpass hostname = input("Device hostname: ") username = input("Device username: ") password = getpass("Device password: ") try: with Device(host=hostname, user=username, passwd=password) as dev: sw = SW(dev) print(sw.poweroff()) except ConnectError as err: print (err)
遅延して、または指定した時間にシステムを停止、再起動、またはシャットダウンする方法
既定では、、reboot()
および poweroff()
メソッドはhalt()
、要求された操作を直ちに実行します。また、操作を遅らせたり、特定の日時にスケジュールしたりすることもできます。
指定した分数だけ操作を遅らせるには、オプションの in_min
パラメーターを、操作を実行する前にシステムが待機する時間 (分単位) に設定します。次の例では、すべてのルーティング エンジンを 2 分以内に再起動するように要求します。
from jnpr.junos import Device from jnpr.junos.utils.sw import SW with Device(host='dc1a.example.com') as dev: sw = SW(dev) sw.reboot(in_min=2)
ターゲットデバイスは、システムにログインしているすべてのユーザーに、差し迫った再起動に関するメッセージを発行します。指定した時間が経過すると、システムが再起動します。
*** System shutdown message from user1@dc1a *** System going down in 2 minutes
特定の時刻に操作をスケジュールするには、次のいずれかの方法で指定できる文字列を受け取る パラメーターを含め at
ます。
now
- ソフトウェアの停止、再起動、またはシャットダウンをただちに開始します。+minutes
- リクエストされた操作が開始されてからの時間 (分)。yymmddhhmm
- 操作を実行する絶対時間(年、月、日、時間、分で指定)。hh:mm
- 操作を実行する当日の絶対時刻で、24 時間表示で指定します。
次の例では、すべてのルーティングエンジンのシステム再起動を当日の22:30にスケジュールしています。
from jnpr.junos import Device from jnpr.junos.utils.sw import SW with Device(host='dc1a.example.com') as dev: sw = SW(dev) sw.reboot(at='22:30')
同様に、次の例では、すべてのルーティング エンジンの電源が当日の 22:30 にオフになるようにスケジュールしています。
from jnpr.junos import Device from jnpr.junos.utils.sw import SW with Device(host='dc1a.example.com') as dev: sw = SW(dev) sw.poweroff(at='22:30')
ターゲットのルーティング エンジン、ノード、バーチャル シャーシ メンバーを指定する方法
デフォルトでは、 、 reboot()
、および poweroff()
メソッドは、halt()
デュアルルーティングエンジンまたはバーチャルシャーシセットアップのすべてのルーティングエンジン、Junos OS Evolvedを実行するデバイスのすべてのノード、バーチャルシャーシのすべてのメンバーに対して、要求された操作を実行します。特定のルーティングエンジン、ノード、またはバーチャルシャーシメンバーに対しても操作を実行できます。
ターゲット ルーティング エンジンを指定するには、 および other_re
パラメーターを使用しますall_re
。表 2 は、all_re
特定のルーティング エンジンで要求された操作を実行するために必要な および other_re
の値をまとめたものです。
影響を受けるルーティング エンジン |
|
|
---|---|---|
すべてのルーティングエンジン(デフォルト) |
省略または に設定 |
– |
接続されたルーティングエンジンのみ |
に設定: |
– |
アプリケーションが接続されているルーティングエンジンを除くすべてのルーティングエンジン |
– |
に設定: |
デュアルルーティングエンジンまたはバーチャルシャーシ設定のすべてのルーティングエンジンで操作を実行する必要があることを明示的に示すには、デフォルトの 引数を含め all_re=True
ます。
from jnpr.junos import Device from jnpr.junos.utils.sw import SW with Device(host='dc1a.example.com') as dev: sw = SW(dev) sw.reboot(all_re=True)
アプリケーションが接続されているルーティング エンジンでのみ要求された操作を実行するには、 引数を含め all_re=False
ます。
from jnpr.junos import Device from jnpr.junos.utils.sw import SW with Device(host='dc1a.example.com') as dev: sw = SW(dev) sw.reboot(all_re=False)
アプリケーションが接続されているルーティングエンジンを除くシステム内のすべてのルーティングエンジンで要求された操作を実行するには、 引数を含め other_re=True
ます。
from jnpr.junos import Device from jnpr.junos.utils.sw import SW with Device(host='dc1a.example.com') as dev: sw = SW(dev) sw.reboot(other_re=True)
Junos OS Evolvedを実行しているデバイスの特定のノードを再起動またはシャットダウンするには、引数 on_node
を含めてノードを指定します。例えば:
from jnpr.junos import Device from jnpr.junos.utils.sw import SW with Device(host='router1.example.com') as dev: sw = SW(dev) sw.reboot(on_node='re0')
バーチャル シャーシ内の特定のメンバーを再起動またはシャットダウンするには、操作を実行するメンバーIDの文字列のリストに引数を設定します member_id
。
from jnpr.junos import Device from jnpr.junos.utils.sw import SW with Device(host='switch1.example.com') as dev: sw = SW(dev) sw.reboot(all_re=False, member_id=['0', '1'])
VM ホストを再起動する方法
VMホストに対応したルーティングエンジンを搭載したデバイスでは、Junos OSはLinuxベースのホスト(VMホスト)上で仮想マシン(VM)として動作します。Junos PyEZreboot()
メソッドは、vmhost
VMホストを再起動できる引数をサポートしています。引数を含めるvmhost=True
と、システムは、 運用モードコマンドに対応するrequest vmhost reboot
RPCを実行して<request-vmhost-reboot>
、すべてのルーティングエンジンでホストOSと互換性のあるJunos OSを再起動します。
次の例では、VM ホスト上のルーティング エンジンを再起動し、ゲスト Junos OS とホスト OS の両方を再起動します。
from jnpr.junos import Device from jnpr.junos.utils.sw import SW with Device(host='switch1.example.net') as dev: sw = SW(dev) sw.reboot(vmhost=True)
変更履歴テーブル
機能のサポートは、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がプラットフォームでサポートされているかどうかを判断します。
poweroff()
メソッドは
reboot()
、デュアルルーティングエンジンまたはバーチャルシャーシ設定のすべてのルーティングエンジンで、要求された操作を実行します。