Entwicklung von On-Device-JET-Anwendungen
Übersicht
JET-Anwendungen, die in den Sprachen C, C++ und Python geschrieben wurden, können auf dem Gerät ausgeführt werden. Sie können die Anwendungen in der heruntergeladenen JET-VM entwickeln und diese Anwendungen dann auf dem Gerät bereitstellen, auf dem Junos OS ausgeführt wird. Sie können JET-Anwendungen auf dem Gerät signieren, um zu zeigen, dass sie vertrauenswürdig sind.
Das End-of-Life- und End-of-Support-Datum von Python 2.7 ist der 1. Januar 2020. Der offizielle Upgrade-Pfad für Python 2.7 führt zu Python 3. Da die Unterstützung für Python 3 auf Geräten mit Junos OS für die verschiedenen Arten von On-Device-Skripts hinzugefügt wird, empfehlen wir, die unterstützten Skripttypen von Python 2 auf Python 3 zu migrieren.
Ab Junos OS Version 21.1R1 und Junos OS Evolved Version 22.3R1 wird Python 2.7 nicht mehr unterstützt und die set system scripts language python
Anweisung ist veraltet. Verwenden Sie stattdessen die set system scripts language python3
Anweisung.
Abbildung 1 zeigt den Workflow für die Anwendungsentwicklung für nicht signierte und signierte JET-Anwendungen auf dem Gerät.

Siehe auch
Entwicklung von nicht signierten JET-Anwendungen
Unsignierte JET-Anwendungen können nur in Python geschrieben werden.
So entwickeln Sie eine nicht signierte JET-Anwendung:
(Optional) Laden Sie die JET-VM herunter, und richten Sie sie ein. Weitere Informationen finden Sie unter Einrichten der JET-VM.
Entwickeln Sie Ihre Anwendung in Python.
Verpacken Sie Ihre Anwendung. Weitere Informationen finden Sie unter Paket-JET-Anwendungen.
-
Konfigurieren Sie die
language
Anweisung auf dem Junos-Gerät. So verwenden Sie beispielsweise Python 3 zum Ausführen eines JET-Skripts, das Python 3 unterstützt:[edit] user@device# set system scripts language python3
Weitere Informationen finden Sie unter Grundlegendes zu Python-Automatisierungsskripts für Geräte mit Junos OS .
Führen Sie die Anwendung auf einem Gerät mit Junos OS aus.
Entwickeln von signierten JET-Anwendungen
Sie können signierte Anwendungen in C, C++ oder Python entwickeln.
So entwickeln Sie eine signierte Anwendung:
Laden Sie die benötigten Pakete herunter, und richten Sie die JET-VM ein. Weitere Informationen finden Sie unter Einrichten der JET-VM.
Fordern Sie ein Signaturzertifikat an. Weitere Informationen finden Sie unter Anfordern eines Signaturzertifikats.
Entwickeln Sie die Anwendung.
Konfigurieren Sie die Lizenz, wenn Ihre Anwendung in C oder C++ geschrieben ist. Dieser Schritt ist für Anwendungen, die in Python geschrieben wurden, optional. Weitere Informationen finden Sie unter Konfigurieren der JET-Anwendung und ihrer Lizenz auf einem Gerät mit Junos OS .
Erstellen Sie das Paket, und signieren Sie das Paket mit dem erworbenen Zertifikat.
Stellen Sie die Anwendung auf einem Gerät bereit, auf dem Junos OS ausgeführt wird.
Anfordern eines Signaturzertifikats
Zum Entwickeln und Verteilen von JET-Anwendungen müssen Sie ein Paketsignaturzertifikat auf der JET-VM installieren, indem Sie das Zertifikatanforderungsskript ausführen. Dieses Skript unterstützt Sie bei der Erstellung eines Signaturschlüssels und einer Zertifikatsanforderung für die Verwendung mit JET.
Geben Sie den Signaturschlüssel niemals an Dritte weiter, auch nicht an Juniper Networks. Der Schlüssel ermöglicht es jedem, Anwendungen zu signieren, denen Ihr Router vertraut. Behandeln Sie daher den Schlüssel mit dem gleichen Sicherheitsniveau wie das Root-Passwort für die Router. Nachdem Sie Ihren Signaturschlüssel erhalten haben, speichern Sie ihn in einer Datei außerhalb der VM.
Das Zertifikatanforderungsskript fragt nach den folgenden Informationen:
Stadt, Bundesland und Land.
Ihre Organisation und Einheit. Die Organisation sollte nicht vage sein. Es dürfen keine Bindestriche ("-") vorhanden sein.
Zertifikatstyp: Geben Sie an, ob es sich um ein kommerzielles oder privates Zertifikat handelt. Unternehmen, die nicht zu Juniper gehören, müssen kommerzielle verwenden. Private Zertifikate werden nur zugewiesen, wenn es sich bei der Organisation um Juniper handelt.
Anbieterpräfix: Hierbei handelt es sich um den eindeutigen Anbieternamen, den Juniper jedem JET-Partner zuweist.
Benutzerzeichenfolge: Dies ist eine zusätzliche Spezifikation Ihrer Wahl. Dabei kann es sich um eine Zeichenfolge handeln, die den Namen des Entwicklungsteams oder Projekts angibt. Die Benutzerzeichenfolge kann aus einem Kleinbuchstaben gefolgt von einem oder mehreren Kleinbuchstaben oder Zahlen bestehen (z. B. teamjet2).
Bereitstellungsbereich: Der Bereitstellungsbereich ist die Zeichenfolge, die von Juniper zugewiesen wird, um mehrere Zertifikate für denselben JET-Partner zu unterscheiden. Damit wird die Gültigkeitsdauer für das generierte Zertifikat festgelegt. Der Umfang kann kommerziell oder Evaluierung sein. Wenn Ihnen keine zugewiesen ist, lassen Sie sie leer.
Indexnummer: Diese Nummer wird als Zertifikatsgenerationsnummer bezeichnet. Es wird 1 für Ihr erstes Zertifikat sein. Wenn ein Zertifikat abläuft und Sie ein neues Zertifikat anfordern, wird diese Anzahl erhöht.
E-Mail-Adresse: Die E-Mail-Adresse für den Zertifikatskontakt wird in das Zertifikat eingebettet. Es wird empfohlen, die E-Mail-Adresse einer Abteilung oder Einheit in Ihrer Organisation zu verwenden. Wir empfehlen Ihnen, keine persönliche E-Mail-Adresse zu verwenden.
Um eine signierte Anwendung zu erstellen, fordern Sie Zertifikate an, und kopieren Sie sie, wie im folgenden Verfahren beschrieben. Dieses Verfahren ist optional, wenn Sie eine nicht signierte Anwendung erstellen möchten.
So fordern Sie manuell ein Zertifikat an:
Erstellen Sie das Verzeichnis / usr/local/junos-jet/certs, falls es noch nicht auf Ihrem Gerät vorhanden ist.
Führen Sie den
jet-certificate-request
Befehl in einem VM-Terminal aus.Das Skript führt Sie durch eine Reihe von Fragen. Beantworten Sie die Fragen und drücken Sie nach jeder Antwort die Eingabetaste. Weitere Informationen finden Sie in den Anforderungen für die einzelnen oben aufgeführten Antworten.
Basierend auf Ihren Antworten generiert das Skript zwei Dateien im Verzeichnis / usr/local/junos-jet/certs: certname_key.pem und certname_req.pem. Das certname ist der Name des Zertifikats.
Der Zertifikatname muss das Format ORGANIZATION-USER-TYPE-NUMBER aufweisen. Alle vier Parameter sind obligatorisch, sonst wird der folgende Fehler angezeigt:
ERROR: CN has invalid format; regex: ^([a-z0-9]+)-([a-z0-9]+)-(commercial|private)-([1-9][0-9]*)$ Expected format: ORGANIZATION-USER-TYPE-NUMBER organization: [a-z0-9]+ Must be "juniper" for type is "private" user: [a-z0-9]+ type: commercial|private number: [1-9][0-9]*
Speichern Sie die certnameDatei _key.pem außerhalb der VM. Dies ist Ihr Signaturschlüssel. Stellen Sie sicher, dass niemand außerhalb Ihrer Entwicklungsorganisation Zugriff darauf hat. Geben Sie den Signaturschlüssel niemals an Dritte weiter, auch nicht an Juniper Networks.
Der Schlüssel ermöglicht es jedem, Anwendungen zu signieren, denen Ihr Router vertraut. Behandeln Sie daher den Schlüssel mit dem gleichen Sicherheitsniveau wie das Root-Passwort für die Router.
Senden Sie die certnameDatei _req.pem an JET Certificate Processing at mailto:jet-cert@juniper.net. Diese Datei enthält Ihre Zertifikatsanforderung. Der Antragsteller sollte berechtigt sein, Signaturzertifikate im Namen seiner Organisation anzufordern. JET Certificate Processing sendet Ihnen Ihr Zertifikat umgehend zu.
Wenn Sie Ihr Zertifikat erhalten haben, speichern Sie es unter certname und kopieren Sie es in das Verzeichnis / usr/local/junos-jet/certs .
Vergewissern Sie sich, dass das Zertifikat und der Signaturschlüssel im Verzeichnis / usr/local/junos-jet/certs verfügbar sind.
Kompilieren von 64-Bit-Anwendungen
JET unterstützt 64-Bit-Anwendungen für Junos OS mit FreeBSD und Junos OS mit aktualisiertem FreeBSD. Wenn Sie bereit sind, Ihre Anwendung zu packen, verwenden Sie die folgenden Befehle, um 64-Bit-Anwendungen für die Verwendung mit der AMD64- oder ARM64-64-Bit-Prozessorarchitektur zu kompilieren.
Gehen Sie wie folgt vor, um die Anwendung für die Verwendung mit AMD64 und Junos OS unter FreeBSD zu kompilieren:
Vergewissern Sie sich, dass Sie über die GCC-Toolchain verfügen, die im JET-Paket enthalten sein sollte.
Verwenden Sie den Befehl
mk-amd64 application name
, um das Anwendungspaket zu erstellen.
Gehen Sie wie folgt vor, um die Anwendung für die Verwendung mit AMD64 und Junos OS mit aktualisiertem FreeBSD zu kompilieren:
Überprüfen Sie, ob Sie die Clang-Toolchain haben, die im JET-Paket enthalten sein sollte.
Verwenden Sie den Befehl
mk-amd64,bsdx application name
, um das Anwendungspaket zu erstellen.
Gehen Sie wie folgt vor, um die Anwendung für die Verwendung mit ARM64 und Junos OS mit aktualisiertem FreeBSD zu kompilieren:
Überprüfen Sie, ob Sie die Clang-Toolchain haben, die im JET-Paket enthalten sein sollte.
Verwenden Sie den Befehl
mk-arm64,bsdx application name
, um das Anwendungspaket zu erstellen.
Beispiel: Entwickeln eines signierten C-Pakets
Nachdem Sie die JET-VM eingerichtet und eine Signaturzertifizierung erworben haben, können Sie die Entwicklungssandbox in der VM erstellen und mit der Entwicklung Ihrer signierten Anwendung auf dem Gerät beginnen. Verwenden Sie dieses Beispiel, um C-Anwendungen echoclient und echoserver zu erstellen.
Beispiel: Entwickeln eines signierten Python-Pakets ohne C-Abhängigkeiten
Nachdem Sie die JET-VM eingerichtet und eine Signaturzertifizierung erworben haben, können Sie die Entwicklungssandbox in der VM erstellen und mit der Entwicklung Ihrer signierten Anwendung auf dem Gerät beginnen. Verwenden Sie dieses Beispiel, um ein signiertes Python-Paket ohne C-Abhängigkeiten zu entwickeln.
Konfigurieren Sie nun das Junos-Gerät, und installieren Sie das Paket.
Wechseln Sie in den Konfigurationsmodus.
root@device> configure Entering configuration mode [edit] root@device#
-
Konfigurieren Sie bei Bedarf die ID des Anwendungsanbieters, den Lizenztyp und den Bereitstellungsumfang auf dem Junos-Gerät. Verwenden Sie dieselbe Anbieterlizenz, die Sie zum Packen verwendet haben.
root@device# set system extensions providers 12345 license-type juniper deployment-scope commercial
Weitere Informationen finden Sie unter Konfigurieren der JET-Anwendung und ihrer Lizenz auf einem Gerät mit Junos OS.
-
Beenden Sie den Betriebsmodus, und installieren Sie das kopierte Paket auf dem Junos-Gerät.
root@device# exit root@device> request system software add /var/tmp/SamplePyApp-x86-32-20180828.231545_user.tgz
Hinweis:Dieser Schritt schlägt fehl, wenn
providers
er nicht konfiguriert ist. Vergewissern Sie sich, dass das Paket erfolgreich installiert wurde.
root@device> show version Hostname: device Model: mx480 … … JET app SamplePyApp [20180828.231545_user]
Wechseln Sie in den Konfigurationsmodus.
root@device> configure Entering configuration mode [edit] root@device#
Konfigurieren Sie die Befehlszeilenargumente über die Junos OS CLI. Wenn ein Python-JET-Skript im Verzeichnis /var/ db/scripts/jet/ auf einem Gerät mit Junos OS verfügbar ist, können Sie Befehlszeilenargumente für die Datei konfigurieren und die Argumente über die Junos CLI angeben.
Hier sind die Argumente in der Anwendung.
import argparse def main(): parser = argparse.ArgumentParser(description='This is a demo script.') parser.add_argument('-arg1', required=True) parser.add_argument('-arg2', required=True) args = parser.parse_args() print args.arg1 print args.arg2 if __name__ == '__main__': main()
Konfigurieren Sie die Befehlszeilenargumente in der CLI. In diesem Beispiel lautet
cmdline_args.py
der Dateiname des Skripts .root@device# set system extensions extension-service application file cmdline_args.py arguments "-arg1 jet -arg2 application"
Bestätigen Sie die Konfiguration und beenden Sie den Betriebsmodus.
root@device# commit root@device# exit
Führen Sie die Anwendung aus.
root@device> request extension-service start cmdline_args.py Extension-service application 'cmdline_args.py' started with PID: 12345 jet application
Beispiel: Entwickeln eines signierten Python-Pakets mit C-Abhängigkeiten
Nachdem Sie die JET-VM eingerichtet und eine Signaturzertifizierung erworben haben, können Sie die Entwicklungssandbox in der VM erstellen und mit der Entwicklung Ihrer signierten Anwendung auf dem Gerät beginnen. Verwenden Sie dieses Beispiel, um ein signiertes Python-Paket mit C-Abhängigkeiten zu entwickeln.