libslax Default Extension Libraries: bit, curl, db, os und xutil
libslax Bit Extension Library
Die libslax Bit-Erweiterungsbibliothek enthält Funktionen, die Bitzeichenfolgen erstellen und bearbeiten. Die Funktionen unterstützen 64-Bit-Integer-Argumente. Um Funktionen aus der Biterweiterungsbibliothek in SLAX-Skripte zu integrieren, fügen Sie die Namespace-Anweisung für diese Bibliothek in das Skript ein.
ns bit extension = "http://xml.libslax.org/bit";
Rufen Sie die Biterweiterungsfunktionen mithilfe des bit Präfixes und des Funktionsnamens auf. Zum Beispiel:
version 1.1;
ns bit extension = "http://xml.libslax.org/bit";
var $a = 63;
var $b = { expr "10111"; }
match / {
<out> {
<bit-and> {
<a1> bit:and("101100", "100101");
<a2> bit:and($a, $b);
<a3> bit:and($a, number($b));
}
<bit-or> {
<a1> bit:or("101100", "100101");
<a2> bit:or($a, $b);
<a3> bit:or($a, number($b));
}
<bit-mask> {
<a1> bit:mask(0);
<a2> bit:mask(8, 32);
}
<ops> {
<a1> bit:to-int("10101");
}
}
}
Tabelle 1 listet die Funktionen auf, die in der Biterweiterungsbibliothek verfügbar sind, die in SLAX 1.1-Skripten in Junos OS Version 12.2 und höher unterstützt wird.
Funktion und Argumente |
Beschreibung |
Beispiel |
|---|---|---|
|
Geben Sie das logische AND von zwei Bit-Zeichenfolgen zurück. |
|
|
Legen Sie das angegebene Bit in der Bitzeichenfolge auf Null fest und geben Sie die neue Bitzeichenfolge zurück. Bits werden mit Null nummeriert. Wenn das Integer-Argument größer als die Bitzeichenfolgenlänge ist, wird die Bitzeichenfolge erweitert. |
|
|
Vergleichen Sie zwei Werte und geben Sie eine ganze Zahl kleiner als, gleich oder größer als Null zurück, wenn das erste Argument kleiner, gleich oder größer als das zweite Argument ist. |
|
|
Geben Sie den Wert des hexademischen Arguments als Bitzeichenfolge zurück. Das optionale zweite Argument setzt die Bitzeichenfolge mit führenden Nullen (0s) ein, bis die angegebene Länge angegeben ist. |
|
|
Geben Sie den Wert des Integer-Arguments als Bitzeichenfolge zurück. Das optionale zweite Argument blockt die Bitzeichenfolge mit führenden Nullen, bis sie die angegebene Länge ist. |
|
|
Geben Sie eine Bitzeichenfolge mit der angegebenen Anzahl von Bits niedriger Reihenfolge auf eins zurück. Das optionale zweite Argument blockt die Bitzeichenfolge mit führenden Nullen, bis sie die angegebene Länge ist. |
|
|
Geben Sie den logischen NAND von zwei Bit-Zeichenfolgen zurück. |
|
|
Geben Sie den logischen NOR von zwei Bit-Zeichenfolgen zurück. |
|
|
Geben Sie die Inversion (NOT) einer Bitzeichenfolge zurück. |
|
|
Geben Sie den logischen ODER von zwei Bit-Zeichenfolgen zurück. |
|
|
Legen Sie das angegebene Bit in der Bitzeichenfolge fest und geben Sie die neue Bitzeichenfolge zurück. Bits werden mit Null nummeriert. Wenn das Integer-Argument größer als die Bitzeichenfolgenlänge ist, wird die Bitzeichenfolge erweitert. |
|
|
Geben Sie den Wert des Bitzeichenfolgenarguments als Integer zurück. |
|
|
Geben Sie den Wert des Bitzeichenfolgenarguments als Zeichenfolgendarstellung des Hexadezimalwerts zurück. |
|
|
Geben Sie das logische XOR von zwei Bitzeichenfolgen zurück. |
|
|
Geben Sie das logische XNOR von zwei Bit-Zeichenfolgen zurück. |
|
libslax curl Extension Library
- Grundlegendes zur libslax curl Extension Library
- Curl:schließen
- Curl:offen
- Curl:ausführen
- curl:set
- Curl:single
- Unterstützte Formatelemente
- Curl Beispiele
- Handhabung von Fehlern
Grundlegendes zur libslax curl Extension Library
cURL ist ein Befehlszeilentool, das die libcurl-Bibliothek verwendet und Datenübertragungen mit einer Reihe von Protokollen unterstützt, einschließlich FTP, FTPS, HTTP, HTTPS, SCP und SMTP. Weitere Informationen zu cURL finden Sie auf der cURL-Website unter http://curl.haxx.se/.
Die libslax-Distribution umfasst die Curl-Erweiterungsbibliothek, die Funktionen enthält, die cURL-Operationen ausführen. Um Funktionen aus der libslax curl Extension Library in SLAX-Skripte zu integrieren, fügen Sie die Namespace-Anweisung für diese Bibliothek in das Skript ein.
ns curl extension = "http://xml.libslax.org/curl";
Sie können dann die Curl-Erweiterungsfunktionen mithilfe des curl Präfixes und des Funktionsnamens aufrufen. cURL-Vorgänge werden mithilfe einer Reihe von Elementen geleitet, die an die Erweiterungsfunktionen übergeben werden.
Tabelle 2 listet die unterstützten Vorgänge in der Curl Extension Library auf und enthält eine Beschreibung jeder Funktion. Tabelle 3 und Tabelle 4 listen die unterstützten Elemente auf und enthalten die Syntax und eine Beschreibung der einzelnen Elemente. Genauer gesagt listet Tabelle 3 elemente auf, die für den Betrieb von Webservices verwendet werden, und Tabelle 4 listet die Elemente auf, die für den E-Mail-Betrieb verwendet werden. Beispiele und weitere Informationen zur Verwendung der curl Extension Library finden Sie unter The curl Extension Library.
Funktion |
Beschreibung |
|---|---|
|
Schließen Sie eine offene Verbindung. Weitere Vorgänge können nicht über die Verbindung durchgeführt werden. Siehe curl:close. |
|
Öffnen Sie eine Verbindung zu einem Remote-Server, sodass mehrere Vorgänge über eine einzige Verbindung möglich sind. Siehe Curl:open. |
|
Führen Sie einfache Übertragungen mit einem persistenten Verbindungshandgriff durch |
|
Zeichnen Sie eine Reihe von Parametern auf, die für die Lebensdauer einer Verbindung bestehen bleiben. Siehe curl:set. |
|
Führen Sie Übertragungsvorgänge aus, ohne eine dauerhafte Verbindung zu verwenden. Siehe Curl:single. |
Element |
Beschreibung |
Syntax |
|---|---|---|
|
Anzahl der Sekunden, bevor ein Verbindungsversuch als fehlgeschlagen gilt. |
|
|
MIME-Typ für die Übertragungsnutzlast. |
|
|
Steuern Sie die Behandlung von HTML- und XML-Parsingfehlern. |
Siehe Umgang mit Fehlern |
|
Geben Sie an, dass die Übertragung fehlschlagen sollte, wenn fehlerbehaftete, auch unbedeutend, erkannt werden. |
|
|
Geben Sie das erwartete Format der zurückgegebenen Ergebnisse an, sodass die Curl-Erweiterung den Inhalt automatisch im nativen Format zur Verfügung stellen kann. Formate umfassen "html", "name", "text", "url-codiert" und "xml". |
|
|
Stellen Sie zusätzliche Header-Felder für die Anforderung bereit. |
|
|
Zeigen Sie die Bereitschaft an, unsichere Kommunikationsvorgänge zu tolerieren. Erlauben Sie insbesondere SSL-Zertifikate, ohne den allgemeinen Namen zu überprüfen. |
|
|
Methode für die Datenübertragung. Dadurch wird der HTTP-Anforderungstyp gesteuert und andere Übertragungsmechanismen ausgelöst. Zu den zulässigen Methodennamen gehören "get", "post", "delete", "head", "email", "put" und "upload". "get" ist der Standard. |
|
|
Geben Sie zusätzliche Parameterwerte für die Anforderung an. Diese Parameter werden in der Regel in die URL codiert. |
|
|
Das Kennwort des Benutzers, das für die Übertragung verwendet werden soll. |
|
|
Fordern Sie die Verwendung der sicheren Version eines Protokolls an, einschließlich HTTPS und FTPS. |
|
|
Anzahl der Sekunden, bevor eine offene Verbindung als fehlgeschlagen gilt. |
|
|
Geben Sie an, dass es sich um eine Datei-Upload-Anfrage handelt. |
|
|
Basis-URL für die Anforderung. |
|
|
Benutzername, der für die Übertragung verwendet werden soll. |
|
|
Fordern Sie detaillierte Debug-Informationen über den Betrieb und die Kommunikation der Übertragung an. |
|
Element |
Beschreibung |
Syntax |
|---|---|---|
|
"Cc"-Adresse für E-Mail-Anfragen (SMTP). Verwenden Sie für mehrere Adressen mehrere <cc>-Elemente. |
|
|
Zu übertragene Inhalte. |
|
|
"From"-Adresse für SMTP-Anfragen (E-Mail). |
|
|
Lokaler Hostname, der für SMTP-Anfragen (E-Mail) verwendet wird. |
|
|
Ausgehender SMTP-Servername. MX-Datensätze werden derzeit nicht verarbeitet. |
|
|
Feld "Betreff" für E-Mail-Anfragen (SMTP). |
|
|
"An"-Adresse für E-Mail-Anfragen (SMTP). Verwenden Sie für mehrere Adressen mehrere <to>-Elemente. |
|
Die libcurl-Elemente ahmen genau die Optionen nach, die von der nativen C libcurl API in der Funktion von curl_easy_setopt() libcurl verwendet werden. Sobald die Optionen festgelegt sind, führt ein Anruf curl_easy_perform() die angeforderte Übertragung aus. Weitere Informationen zur curl_easy_setopt() Funktion finden Sie unter http://curl.haxx.se/libcurl/c/curl_easy_setopt.html .
In der libslax curl Extension Library werden die libcurl-API-Optionen als einzelne Elemente dargestellt. Beispielsweise wird das <url> Element der Option CURLOPT_URL zugeordnet, das <method> Element wird der Option CURLOPT_CUSTOMREQUEST zugeordnet usw.
Diese Elemente können auf drei Arten verwendet werden:
Die
curl:single()Erweiterungsfunktion unterstützt die Verwendung einer Reihe von Optionen in einem einzigen Übertragungsvorgang ohne dauerhaften Verbindungshandgriff.Die
curl:perform()Erweiterungsfunktion unterstützt die Verwendung einer Reihe von Optionen mit einem persistenten Verbindungshandgriff. Der Griff wird von der Erweiterungsfunktioncurl:open()zurückgegeben und kann mit der Erweiterungsfunktioncurl:close()geschlossen werden.Die Erweiterungsfunktion
curl:set()zeichnet eine Reihe von Optionen für einen Verbindungsgriff auf und hält diese Optionen während der gesamten Lebensdauer der Verbindung aktiv. Wenn das Skript beispielsweise eine Reihe von Dateien übertragen muss, kann es die<username>Optionen aufzeichnen und<password>vermeiden, dass sie bei jedemcurl:perform()Aufruf wiederholt werden.
Curl:schließen
Die curl:close() Erweiterungsfunktion schließt eine offene Verbindung. Nach dem Schließen der Verbindung können keine weiteren Vorgänge mehr ausgeführt werden.
Die Syntax lautet:
node-set[empty] curl:close(node-set[connection]);
Das Argument ist der Verbindungshand zum Schließen.
Curl:offen
Die curl:open() Erweiterungsfunktion öffnet eine Verbindung zu einem Remote-Server, sodass mehrere Vorgänge über eine einzige Verbindung möglich sind.
Die Syntax lautet:
node-set[connection] curl:open();
Das zurückgegebene Objekt ist ein Verbindungshandhand, das an curl:perform() oder curl:close()übergeben werden kann.
Curl:ausführen
Die curl:perform() Erweiterungsfunktion führt einfache Übertragungen mithilfe eines permanenten Verbindungshandgriffs durch, der von curl:open().
Die Syntax lautet:
node-set[object] curl:perform(node-set[connection], node-set[options])
Bei den Argumenten handelt es sich um den Verbindungshandhab und eine Reihe von Optionselementen. Die unterstützten Curl Extension Library-Elemente sind in Tabelle 3 und Tabelle 4 definiert.
Das zurückgegebene Objekt ist eine XML-Hierarchie, die die Ergebnisse der Übertragung enthält. Tabelle 5 listet die möglichen Elemente der Antwort auf, und Tabelle 6 listet die möglichen Elemente auf, die in dem <header> Element enthalten sind.
Element |
Inhalt |
|---|---|
|
Leeres Element, das den Erfolg anzeigt |
|
Analysierte Daten |
|
Falls vorhanden, Fehlermeldungen |
|
Analysierte Header-Felder |
|
Rohdaten aus der Antwort |
|
Kopfzeilen-Rohfelder aus der Antwort |
|
Angeforderte URL |
Element |
Inhalt |
|---|---|
|
HTTP-Antwortcode |
|
HTTP-Antwortfeld (mit @name und Wert) |
|
HTTP-Antwortnachricht |
|
Versionszeichenfolge für HTTP-Antwort |
Im folgenden Beispiel wird das <header> Element mit in <field> Elementen analysierten Header-Feldern dargestellt:
<header>
<version>HTTP/1.1</version>
<code>404</code>
<message>Not Found</message>
<field name="Content-Type">text/html</field>
<field name="Content-Length">345</field>
<field name="Date">Mon, 08 Aug 2011 03:40:21 GMT</field>
<field name="Server">lighttpd/1.4.28 juisebox</field>
</header>
curl:set
Die curl:set() Erweiterungsfunktion zeichnet eine Reihe von Parametern auf, die für die Lebensdauer einer Verbindung bestehen bleiben.
Die Syntax lautet:
node-set[empty] curl:set(node-set[handle], node-set[options]);
Bei den Argumenten handelt es sich um den Verbindungshandhab und eine Reihe von Optionselementen. Die unterstützten Curl Extension Library-Elemente sind in Tabelle 3 und Tabelle 4 definiert.
Curl:single
Die curl:single() Erweiterungsfunktion führt Übertragungsvorgänge durch, ohne eine dauerhafte Verbindung zu verwenden.
Die Syntax lautet:
node-set[result] curl:single(node-set[options]);
Das zurückgegebene Objekt ist in der Struktur identisch mit dem von curl:perform(). Weitere Informationen finden Sie unter curl:perform .
Unterstützte Formatelemente
Ab Version 1.2 der SLAX-Sprache, die von Junos OS Version 14.2 und höher unterstützt wird, unterstützt das format Element neben "html", "text" und "xml" zwei neue Formate: "name" und "url-codiert". Die "Name"-Codierung wird für name=Wert-Paare verwendet, die durch Neue linien getrennt sind, während die "URL-codierte" Codierung verwendet wird, wenn die Name=Wertpaare durch ein amperund (&) getrennt sind.
Die analysierten Daten werden mithilfe von <data> <name> Elementen im Element zurückgegeben. Im folgenden Beispiel format wird auf "URL-codiert" festgelegt:
<results>
<url>http://api.example.com/request_token</url>
<curl-success/>
<raw-headers>HTTP/1.1 200 OK
Server: XXXX
Date: Tue, 18 Jun 2013 18:56:31 GMT
Content-Type: application/x-www-form-urlencoded
Transfer-Encoding: chunked
Connection: keep-alive
x-server-response-time: 69
x-example-request-id: 123456
pragma: no-cache
cache-control: no-cache
x-http-protocol: None
x-frame-options: SAMEORIGIN
X-RequestId: 12345

</raw-headers>
<headers>
<version>HTTP/1.1</version>
<code>200</code>
<message>OK</message>
<header name="Server">XXXXX</header>
<header name="Date">Tue, 18 Jun 2013 18:56:31 GMT</header>
<header name="Content-Type"
>application/x-www-form-urlencoded</header>
<header name="Transfer-Encoding">chunked</header>
<header name="Connection">keep-alive</header>
<header name="x-server-response-time">69</header>
<header name="x-example-request-id">123456</header>
<header name="pragma">no-cache</header>
<header name="cache-control">no-cache</header>
<header name="x-http-protocol">None</header>
<header name="x-frame-options">SAMEORIGIN</header>
<header name="X-RequestId">12345</header>
</headers>
<raw-data>oauth_token_secret=s&oauth_token=t</raw-data>
<data format="url-encoded">
<name name="oauth_token_secret">s</name>
<name name="oauth_token">t</name>
</data>
</results>
Curl Beispiele
Die folgenden Beispiele zeigen SLAX-Skripte, die die Libslax-Erweiterungsbibliotheksfunktionen curl verwenden, um Vorgänge auszuführen.
Das folgende SLAX-Skript führt einen einfachen GET-Vorgang aus, um eine Webseite abzurufen. Das Skript gibt das Header-Feld für den HTTP-Header und einen Parameter an, der in die angeforderte URL integriert ist.
version 1.1;
ns curl extension = "http://xml.libslax.org/curl";
param $url = "http://www.juniper.net";
match / {
<op-script-results> {
var $options = {
<header name="client"> "slaxproc";
<param name="smokey"> "bandit";
}
var $results = curl:single($url, $options);
message "completed: " _ $results/headers/message;
<curl> {
copy-of $results;
}
}
}
Das folgende SLAX-Skript sendet eine E-Mail über einen Server, die als Parameter bereitgestellt wird:
version 1.1;
ns curl extension = "http://xml.libslax.org/curl";
param $server;
match / {
<out> {
var $info = {
<method> "email";
<server> $server;
<from> "muffin@example.com";
<to> "phil@example.net";
<subject> "Testing...";
<contents> "Hello,
This is an email.
Thanks,
Phil
";
}
var $res = curl:single($info);
<res> {
copy-of $res;
}
}
}
Das folgende SLAX-Op-Skript verwendet die bereitgestellten Anmeldeinformationen, um eine Verbindung herzustellen und sich bei einer Webanwendung anzumelden:
version 1.2;
ns curl extension = "http://xml.libslax.org/curl";
param $url = "http://198.51.100.10:4000/login";
param $username = "admin";
param $password = "password";
var $params := {
<url> $url;
<method> "post";
<insecure>;
<param name="username"> $username;
<param name="password"> $password;
}
main <top> {
var $curl = curl:open();
var $data = curl:perform($curl, $params);
copy-of $data;
expr curl:close($curl);
}
Sie können Flask verwenden, um eine einfache Webanwendung zum Testen des Skripts zu erstellen. Flask, das auf PyPI verfügbar ist, ist ein leichtes Web Server Gateway Interface (WSGI)-Webanwendungs-Framework. Das folgende Python-Skript von https://pythonspot.com/login-authentication-with-flask erstellt eine einfache Webanwendung mit einer Anmeldeseite.
from flask import Flask
from flask import Flask, flash, redirect, render_template, request, session, abort
import os
app = Flask(__name__)
@app.route('/')
def home():
if not session.get('logged_in'):
return render_template('login.html')
else:
return "Hello Boss!"
@app.route('/login', methods=['POST'])
def do_admin_login():
if request.form['password'] == 'password' and request.form['username'] == 'admin':
session['logged_in'] = True
else:
flash('wrong password!')
return home()
if __name__ == "__main__":
app.secret_key = os.urandom(12)
app.run(debug=True,host='0,0.0.0', port=4000)
Um das Op-Skript zu testen, starten Sie zuerst das Webanwendungsskript auf dem Remotegerät.
user@nms:~$ python3 app.py * Serving Flask app "app" (lazy loading) ...
Aktivieren Sie dann das Op-Skript auf dem Gerät, auf dem Junos OS ausgeführt wird. Die Ergebnisse werden in der Datei op-script.log protokolliert.
user@router> op curl-test
user@router> show log op-script.log | last 100
...
<?xml version="1.0"?>
<top>
<results>
<url>http://198.51.100.10:4000/login</url>
<curl-success/>
<raw-headers>HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 11
Vary: Cookie
Set-Cookie: session=eyJsb2dnZWRfaW4iOnRydWV9.XzxdUg.wm2A58ct6twASerlHjuQ64nwaiI; HttpOnly; Path=/
Server: Werkzeug/1.0.1 Python/3.6.9
Date: Tue, 18 Aug 2020 22:59:30 GMT

</raw-headers>
<headers>
<version>HTTP/1.0</version>
<code>200</code>
<message>OK</message>
<header name="Content-Type">text/html; charset=utf-8</header>
<header name="Content-Length">11</header>
<header name="Vary">Cookie</header>
<header name="Set-Cookie">session=eyJsb2dnZWRfaW4iOnRydWV9.XzxdUg.wm2A58ct6twASerlHjuQ64nwaiI; HttpOnly; Path=/</header>
<header name="Server">Werkzeug/1.0.1 Python/3.6.9</header>
<header name="Date">Tue, 18 Aug 2020 22:59:30 GMT</header>
</headers>
<raw-data>Hello Boss!</raw-data>
</results>Aug 18 15:59:31 end dump
</top>
...
Handhabung von Fehlern
Ab Version 1.2 der SLAX-Sprache, die von Junos OS Version 14.2 und höher unterstützt wird, können Sie das <errors> Element verwenden, um die Verarbeitung von HTML- und XML-Analysefehlern zu steuern. Das Standardverhalten besteht darin, Fehler im Standardfehler-Ausgabestrom (stderr) anzuzeigen. Indem Sie verschiedene Werte für das <errors> Element bereitstellen, können Sie den Fehler auch ignorieren, protokollieren oder aufzeichnen. Tabelle 7 listet die Werte auf, die Sie für das errors Element verwenden können.
Wert |
Besonderes Verhalten |
|---|---|
Standard |
Fehler werden auf stderr angezeigt |
Ignorieren |
Fehler werden verworfen |
Protokoll |
Fehler werden protokolliert (via slaxLog()) |
Aufzeichnung |
Fehler werden aufgezeichnet |
Wenn der Wert von <errors> auf "record" festgelegt ist, werden alle Fehler in einer Zeichenfolge unter dem <errors> Element im XML-Knoten angezeigt (wie z. B. von curl:perform). Wenn keine Fehler generiert werden, ist das <errors> Element nicht vorhanden, das als Fehlertest verwendet werden kann.
var $opt = {
<url> $url;
<format> "html";
<errors> "record";
}
var $res = curl:single($opts);
if ($res/errors) {
terminate "failure: " _ $res/errors;
}
libslax db Extension Library
Die libslax db Extension Library, die von Junos OS Version 17.4R1 und höher unterstützt wird, bietet eine Möglichkeit für SLAX-Skripte, in einer Datenbank gespeicherte Daten zu speichern, zu bearbeiten, abzurufen und zu löschen. Um Funktionen aus der db-Erweiterungsbibliothek in SLAX-Skripten zu verwenden, fügen Sie die Namespace-Anweisung für diese Bibliothek in das Skript ein.
ns db extension = "http://xml.libslax.org/db";
Tabelle 8 fasst die Funktionen zusammen, die in der db-Erweiterungsbibliothek verfügbar sind. Beispiele und weitere Informationen zu den DB-Erweiterungsfunktionen finden Sie unter db-Erweiterungsfunktionen.
Funktion |
Beschreibung |
|---|---|
|
Schließen Sie die Datenbankverbindung, und befreien Sie alle Strukturen, die mit früheren Vorgängen verbunden sind, die an diesem Handle durchgeführt wurden. |
|
Erstellen Sie eine Auflistung in der Datenbank, die dem offenen Datenbankhandhabe zugeordnet ist, und verwenden Sie die angegebenen Feldinformationen. |
|
Löschen Sie Instanzen in einer Sammlung, die den angegebenen Bedingungen in der Datenbank entsprechen, die dem offenen Datenbankhandhabe zugeordnet ist. |
|
Ruft eine Ergebnisinstanz mit dem von einem |
|
Geben Sie einen Cursor für Instanzen zurück, die den angegebenen Bedingungen entsprechen. |
|
Finden und lesen Sie alle Instanzen, die den angegebenen Bedingungen entsprechen. |
|
Einfügen von Daten in eine Sammlung in der Datenbank, die dem offenen Datenbankhandhabe zugeordnet ist. |
|
Öffnen Sie eine Datenbankverbindung mit den angegebenen Optionen, einschließlich des Back-End-Datenbankmoduls und des Datenbanknamens. |
|
Führen Sie eine benutzerdefinierte Abfrage aus. |
|
Aktualisieren Sie eine Reihe von Instanzen, die den angegebenen Bedingungen mit der bereitgestellten Instanz übereinstimmen. |
Tabelle 9 fasst die Elemente zusammen, die in den Optionen und Daten von DB-Erweiterungsfunktionen verwendet werden können. Beispiele und weitere Informationen zu db-Elementen finden Sie unter db Elements.
Element |
Beschreibung |
Beispiel |
|---|---|---|
|
Geben Sie die Datenerfassung an, für die Vorgänge ausgeführt werden sollen. Dies entspricht einer SQL-Datenbanktabelle. |
<collection> "employee"; |
|
Geben Sie eine Bedingung an, die beim Betrieb mit Dateninstanzen aus dem Datenspeicher erfüllt sein muss. Dies bildet die Bedingung, die mit der WHERE-Klausel beim Betrieb mit einem SQL-Datenspeicher verwendet wird. Zu den obligatorischen Elementen gehören:
|
<condition> {
<selector> "id;
<operator> "in";
<value> "(1, 10)";
} |
|
Geben Sie mehrere Bedingungen mit |
<conditions> {
<and> {
<condition> {
... /* c1 */
}
<condition> {
... /* c2 */
}
<or> {
<condition> {
... /* c3 */
}
<condition> {
... /* c4 */
}
}
}
} |
|
Geben Sie den Namen der Datenbank an, in der sie betrieben werden soll. |
<database> "test.db"; |
|
Geben Sie die Back-End-Datenbank-Engine an, die zum Speichern und Zugriff von Daten verwendet wird. |
<engine> "sqlite"; |
|
Definieren Sie die Metadaten für jedes Feld in der Sammlung. |
<field> {
<name> "name";
<type> "integer";
<primary>;
} |
|
Geben Sie Metadaten zu Feldern in einer Sammlung mithilfe untergeordneter |
<fields> {
<field> {
...
}
} |
|
Stellen Sie eine einzelne Instanz in einer Sammlung dar, wenn Daten im Datenspeicher eingefügt oder manipuliert werden. Das Element enthält Felder und die entsprechenden Werte in diesem Datensatz. |
<instance> {
<id> 5;
<name> "John";
} |
|
Definieren Sie mehrere Instanzen in einer Sammlung, wenn Sie Daten in den Datenspeicher einfügen oder bearbeiten. |
<instances> {
<instance> {
...
...
}
...
} |
|
Begrenzen Sie die Anzahl der Instanzen, die ein Ergebnis enthalten kann. |
<limit> 10; |
|
Ausgabeknoten, der von den meisten DB-Erweiterungsfunktionen zurückgegeben wird. Dieser Knoten enthält ein |
<result> {
<status> {
<ok>
}
} |
|
Geben Sie nur die Felder an, die beim Abfragen des Datenspeichers als Teil des Ergebnissatzes angezeigt werden sollen. |
<retrieve> {
<id>;
<name>;
} |
|
Überspringen Sie eine angegebene Anzahl von Instanzen im Ergebnissatz, bevor Sie an den Benutzer zurückkehren. |
<skip> 5; |
|
Geben Sie die Felder und die Reihenfolge an, nach der der Ergebnissatz sortiert werden muss. Geben Sie die Felder durch Einschluss des |
<sort> {
<by> "id";
<by> "age";
<order> "desc";
} |
libslax OS Extension Library
Die libslax-Erweiterungsbibliothek os bietet eine Reihe von Funktionen, um betriebssystembezogene Vorgänge auf dem lokalen Host aufzurufen. Um Funktionen aus der Erweiterungsbibliothek os in SLAX-Skripten zu verwenden, fügen Sie die Namespace-Anweisung für diese Bibliothek in das Skript ein.
ns os extension = "http://xml.libslax.org/os";
Tabelle 10 fasst die Funktionen zusammen, die in der Os-Erweiterungsbibliothek verfügbar sind. Der Rückgabewert vieler os Erweiterungsfunktionen besteht aus einer Reihe von Null oder mehr Fehlerknoten. Jeder Knoten kann ein <error> Element mit zusätzlichen untergeordneten Elementen enthalten. Beispiele und weitere Informationen zu os Erweiterungsfunktionen finden Sie unter Os Extension Functions.
Funktion |
Beschreibung |
Erste unterstützte Junos OS-Version |
|---|---|---|
|
Ändern Sie die Berechtigungen für eine oder mehrere Dateien. |
17.4 |
|
Ändern Sie den Dateibesitzer und die Gruppe für eine oder mehrere Dateien. |
17.4 |
|
Legen Sie den Exit-Code für den Prozess fest, der das Skript ausführt. |
14.1 |
|
Erstellen Sie ein neues Verzeichnis mit dem angegebenen Namen, Pfad und Berechtigungen. Die |
14.1 |
|
Löschen Sie eine Datei oder ein leeres Verzeichnis. |
17.4 |
|
Geben Sie Informationen zu Dateien und Verzeichnissen in einem Knotensatz von |
14.1 |
|
Geben Sie ein |
17.4 |
libslax xutil Extension Library
Die Erweiterungsbibliothek libslax xutil enthält Funktionen, die zwischen Zeichenfolgen und XML-Knotensätze konvertiert werden. Um Funktionen aus der xutil-Erweiterungsbibliothek in SLAX-Skripte zu integrieren, fügen Sie die Namespace-Anweisung für diese Bibliothek in das Skript ein.
ns xutil extension = "http://xml.libslax.org/xutil";
Rufen Sie die xutil-Erweiterungsfunktionen mithilfe des Präfixes xutil und des Funktionsnamens auf. Tabelle 11 listet die in der Erweiterungsbibliothek xutil verfügbaren Funktionen auf, die in SLAX 1.1- und höher-Skripten unterstützt werden. Beispiele und weitere Informationen zu xutil-Erweiterungsfunktionen finden Sie unter xutil Extension Functions.
Funktion und Argumente |
Beschreibung |
Erste unterstützte Junos OS-Version |
|---|---|---|
|
Konvertieren Sie eine Zeichenfolge, die JSON-Daten enthält, in die native Darstellung dieser Daten in XML. |
14.2 |
|
Begrenzen Sie die Tiefe rekursiver Anrufe. Die Standardgrenze ist 3.000. |
14.1 |
|
Konvertieren Sie eine Zeichenfolge mit XML-Daten in die native Darstellung dieser Daten. |
12.2 |
|
Konvertieren Sie XML-Daten in eine Zeichenfolge, die JSON-Daten enthält. Diese Funktion codiert Tags als JSON-Objekte innerhalb einer Zeichenfolge. |
14.2 |
|
Konvertieren Sie XML-Daten in eine Zeichenfolge. |
12.2 |