Verwenden von Junos PyEZ zum Anhalten, Neustarten oder Herunterfahren von Junos-Geräten
ZUSAMMENFASSUNG Verwenden Sie Junos PyEZ, um Junos-Geräte sofort oder zu einem bestimmten Zeitpunkt anzuhalten, neu zu starten oder herunterzufahren.
Anhalten, Neustarten oder Herunterfahren des Systems
Das Dienstprogramm Junos PyEZ jnpr.junos.utils.sw.SW stellt Methoden bereit, mit denen Sie die folgenden Vorgänge auf Junos-Geräten ausführen können:
Sofortiges Anhalten, Neustarten oder Herunterfahren des Systems
Ein Stopp-, Neustart- oder Herunterfahrvorgang mit einer optionalen Verzögerung
Ein Stopp-, Neustart- oder Herunterfahrvorgang, der zu einem bestimmten Datum und einer bestimmten Uhrzeit geplant ist
Tabelle 1 gibt einen Überblick über die verfügbaren Methoden. Standardmäßig führen die Methoden den angeforderten Vorgang sofort auf allen Routing-Engines oder Knoten im Setup aus. Sie können zusätzliche Argumente hinzufügen, um den Vorgang zu einem späteren Zeitpunkt auszuführen, sowie die betroffenen Routing-Engines oder Knoten angeben.
Methode |
Beschreibung |
|---|---|
Ordnungsgemäßes Herunterfahren der Junos OS-Software, aber Aufrechterhaltung der Stromversorgung des Systems |
|
Ordnungsgemäßes Herunterfahren der Junos OS-Software und Ausschalten der Routing-Engines |
|
Starten Sie die Junos OS-Software neu |
Ab Junos PyEZ, Version 2.1.0, führen die reboot() und poweroff() -Methoden den angeforderten Vorgang auf allen Routing-Engines in einem Dual-Routing-Engine- oder Virtual Chassis-Setup aus. In früheren Versionen führen die Methoden den Vorgang nur für das Routingmodul aus, mit dem die Anwendung verbunden ist.
Wenn eine Junos PyEZ-Anwendung ein Gerät aus einer NETCONF-over-SSH-Sitzung oder aus einer Telnet-Sitzung über die Verwaltungsschnittstelle neu startet, verliert die Anwendung beim Neustart die Verbindung zum Gerät. Wenn die Anwendung nach dem Neustart Zugriff auf das Gerät benötigt, muss sie die Junos PyEZ-Methode open() ausgeben, um die Konnektivität wiederherzustellen.
Die folgende Junos PyEZ-Anwendung stellt mit sofortiger Wirkung eine NETCONF-Sitzung über SSH mit einem Junos-Gerät her und startet alle Routing-Engines neu.
#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)
Das Programm fordert zur Eingabe des Hostnamens des Geräts und der Anmeldeinformationen des Benutzers auf. Nachdem der Systemneustart angefordert wurde, zeigt die Anwendung die Neustartmeldung und die Prozess-ID für den Prozess auf der verbundenen Routing-Engine an.
user1@server:~$ python3 junos-pyez-reboot.py Device hostname: dc1a.example.com Device username: user1 Device password: Shutdown NOW! [pid 2358]
Im folgenden Junos PyEZ-Beispiel werden alle Routing-Engines auf dem Gerät mit sofortiger Wirkung heruntergefahren.
#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)
So stoppen, starten oder fahren Sie das System mit einer Verzögerung oder zu einem bestimmten Zeitpunkt herunter
Standardmäßig führen die halt()Methoden , reboot()und poweroff() sofort den angeforderten Vorgang aus. Sie können den Vorgang auch verzögern oder zu einem bestimmten Datum und einer bestimmten Uhrzeit planen.
Um den Vorgang um eine bestimmte Anzahl von Minuten zu verzögern, legen Sie den optionalen in_min Parameter auf die Zeitspanne in Minuten fest, die das System warten soll, bevor der Vorgang ausgeführt wird. Im folgenden Beispiel wird ein Neustart aller Routing-Engines in 2 Minuten angefordert:
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)
Das Zielgerät gibt Meldungen über den bevorstehenden Neustart an alle am System angemeldeten Benutzer aus. Nach Ablauf der angegebenen Zeit wird das System neu gestartet.
*** System shutdown message from user1@dc1a *** System going down in 2 minutes
Um den Vorgang zu einem bestimmten Zeitpunkt zu planen, schließen Sie den Parameter ein, der at eine Zeichenfolge akzeptiert, die auf eine der folgenden Arten angegeben werden kann:
now– Veranlassen Sie sofort das Anhalten, Neustarten oder Herunterfahren der Software.+minutes: Anzahl der Minuten, in denen der angeforderte Vorgang initiiert wird.yymmddhhmm– Absolute Uhrzeit für die Ausführung des Vorgangs, angegeben als Jahr, Monat, Tag, Stunde und Minute.hh:mm– Absolute Zeit am aktuellen Tag, an dem der Vorgang ausgeführt werden soll, angegeben in 24-Stunden-Zeit.
Im folgenden Beispiel wird ein Systemneustart aller Routing-Engines um 22:30 Uhr am aktuellen Tag geplant:
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')
In ähnlicher Weise wird im folgenden Beispiel geplant, dass alle Routing-Engines am aktuellen Tag um 22:30 Uhr ausgeschaltet werden:
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')
Angeben der Zielrouting-Engines, Knoten oder Virtual Chassis-Komponenten
Standardmäßig führen die halt()Methoden , reboot()und poweroff() den angeforderten Vorgang auf allen Routing-Engines in einem Dual-Routing-Engine- oder Virtual Chassis-Setup, auf allen Knoten auf Geräten mit Junos OS Evolved und auf allen Mitgliedern eines Virtual Chassis aus. Sie können den Vorgang auch für bestimmte Routing-Engines, Knoten oder Virtual Chassis-Member ausführen.
Um die Ziel-Routing-Engines anzugeben, verwenden Sie die all_re Parameter und other_re . Tabelle 2 fasst die all_re Werte und other_re Werte zusammen, die zum Ausführen des angeforderten Vorgangs auf bestimmten Routingmodulen erforderlich sind.
| Betroffene Routing-Engines |
|
|
|---|---|---|
| Alle Routing-Engines (Standard) |
Weglassen oder setzen auf |
– |
| Nur die verbundene Routing-Engine |
Setzen Sie auf |
– |
| Alle Routing-Engines mit Ausnahme der Routing-Engine, mit der die Anwendung verbunden ist |
– |
Setzen Sie auf |
Um explizit anzugeben, dass der Vorgang auf allen Routing-Engines in einem Dual-Routing-Engine- oder Virtual Chassis-Setup ausgeführt werden soll, fügen Sie das all_re=True Argument ein, das das Standardargument ist.
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)
Um den angeforderten Vorgang nur für das Routingmodul auszuführen, mit dem die Anwendung verbunden ist, schließen Sie das Argument all_re=False ein.
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)
Um den angeforderten Vorgang für alle Routing-Engines im System mit Ausnahme der Routing-Engine, mit der die Anwendung verbunden ist, auszuführen, schließen Sie das other_re=True Argument ein.
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)
Um einen bestimmten Knoten eines Geräts, auf dem Junos OS Evolved ausgeführt wird, neu zu starten oder herunterzufahren, fügen Sie das on_node Argument ein, und geben Sie den Knoten an. Zum Beispiel:
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')
Um bestimmte Member in einem Virtual Chassis neu zu starten oder herunterzufahren, legen Sie das member_id Argument auf eine Liste von Zeichenfolgen der Member-IDs fest, für die der Vorgang ausgeführt werden soll.
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'])
So starten Sie einen VM-Host neu
Auf Geräten mit Routing-Engines mit VM-Host-Unterstützung wird Junos OS als virtuelle Maschine (VM) über einen Linux-basierten Host (VM-Host) ausgeführt. Die Junos PyEZ-Methode reboot() unterstützt das Argument, mit dem vmhost Sie einen VM-Host neu starten können. Wenn Sie das vmhost=True Argument einschließen, startet das System das Hostbetriebssystem und das kompatible Junos-Betriebssystem auf allen Routing-Engines neu, indem es den <request-vmhost-reboot> RPC ausführt, der dem Befehl für den request vmhost reboot Betriebsmodus entspricht.
Im folgenden Beispiel werden die Routing-Engines auf dem VM-Host neu gestartet, wodurch sowohl das Junos-Gastbetriebssystem als auch das Hostbetriebssystem neu gestartet werden.
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)
Tabelle "Änderungshistorie"
Die Funktionsunterstützung hängt von der Plattform und der Version ab, die Sie verwenden. Verwenden Sie den Feature-Explorer , um festzustellen, ob ein Feature auf Ihrer Plattform unterstützt wird.
reboot() und
poweroff() -Methoden den angeforderten Vorgang auf allen Routing-Engines in einem Dual-Routing-Engine- oder Virtual Chassis-Setup aus.