使用 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 版开始, reboot() 和 poweroff() 方法会在双路由引擎或虚拟机箱设置中的所有路由引擎上执行请求的操作。在早期版本中,方法仅在应用程序连接到的路由引擎上执行此操作。
如果 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)
如何延迟或在指定时间停止、重新启动或关闭系统
默认情况下, halt()、 reboot()和 poweroff() 方法会立即执行请求的操作。您还可以延迟操作或安排在特定日期和时间进行操作。
要将操作延迟指定的分钟数,请将可选 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')
如何指定目标路由引擎、节点或虚拟机箱成员
默认情况下, halt()、 reboot()和 poweroff() 方法在双路由引擎或虚拟机箱设置中的所有路由引擎、运行 Junos OS 演化的设备上的所有节点以及虚拟机箱的所有成员上执行请求的操作。您还可以在特定路由引擎、节点或虚拟机箱成员上执行此操作。
要指定目标路由引擎, all_re 请使用和 other_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 演化版的设备的特定节点,请包含 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')
要重新启动或关闭虚拟机箱中的特定成员,请将 member_id 参数设置为要对其执行操作的成员 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 主机
在具有支持虚拟机主机的路由引擎的设备上,Junos OS 在基于 Linux 的主机(虚拟机主机)上作为虚拟机 (VM) 运行。Junos PyEZ reboot() 方法支持该 vmhost 参数,使您能够重新启动 VM 主机。包含 vmhost=True 参数时,系统会通过执行 <request-vmhost-reboot> 与操作模式命令对应的 request vmhost reboot RPC,重新启动所有路由引擎上的主机操作系统和兼容的 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)
更改历史记录表
功能支持由您使用的平台和版本决定。使用 功能资源管理器 确定您的平台是否支持某个功能。
reboot() 和
poweroff() 方法会在双路由引擎或虚拟机箱设置中的所有路由引擎上执行请求的操作。