VARLINKCTL(1) varlinkctl VARLINKCTL(1) BEZEICHNUNG varlinkctl - Varlink-Diensten untersuchen und aufrufen UBERSICHT varlinkctl [OPTIONEN] info ADRESSE varlinkctl [OPTIONEN] list-interfaces ADRESSE varlinkctl [OPTIONEN] list-methods ADRESSE [SCHNITTSTELLE] varlinkctl [OPTIONEN] introspect ADRESSE [SCHNITTSTELLE] varlinkctl [OPTIONEN] call ADRESSE METHODE [ARGUMENTE] varlinkctl [OPTIONEN] validate-idl [DATEI] BESCHREIBUNG varlinkctl kann zur Untersuchung und dem Aufruf von Varlink[1]-Diensten verwandt werden. Dienste werden durch eines der Folgenden referenziert: o Eine Varlink-Referenz, die mit der Zeichenkette >>unix:<< beginnt, gefolgt von einem absoluten AF_UNIX-Socket-Pfad, oder durch >>@<< und eine beliebige Zeichenkette (letzteres fur die Referenzierung von Sockets in dem abstrakten Namensraum). In diesem Fall erfolgt eine Datenstrom-Socket-Verbindung mit dem angegebenen Socket. o Eine Varlink-Referenz, die mit der Zeichenkette >>exec:<< beginnt, gefolgt von einem absoluten Pfad zum auszufuhrenden Programm. In diesem Fall wird der angegebene Prozess lokal gestartet, wobei ein verbundener Datenstrom-Socket hereingereicht wird. o Eine Varlink-Referenz, die mit der Zeichenkette >>ssh-unix:<< beginnt, gefolgt von einer SSH-Rechnerangabe, gefolgt von >>:<<, gefolgt von einem absoluten AF_UNIX-Socket-Pfad. (Dies benotigt OpenSSH 9.4 oder neuer auf der Server-Seite, abstrakte Namensraume werden nicht unterstutzt.) o Eine Varlink-Referenz, die mit der Zeichenkette >>ssh-exec:<< beginnt, gefolgt von einer SSH-Rechnerangabe, gefolgt von >>:<<, gefolgt von einer Befehlszeile. In diesem Fall wird der Befehl aufgerufen und das Varlink-Protokoll auf der Standardeingabe und der Standardausgabe des aufgerufenen Befehls gesprochen. Fur mehr Komfort werden diese zwei einfacheren (redundanten) Diensteadressyntaxen auch unterstutzt: o Ein Dateisystempfad zu einem AF_UNIX-Socket, entweder absolut (d.h. mit >>/<< beginnend) oder relativ (dann muss er mit >>./<< anfangen). o Ein Dateisystempfad zu einem Programm, entweder absolut oder relativ (wie oben, muss mit >>/<< bzw. >>./<< beginnen). BEFEHLE Die folgenden Befehle werden verstanden: info ADRESSE Zeigt eine kurze Information uber den angegebenen Dienst, einschliesslich des Lieferantennamens und einer Liste der implementierten Schnittstellen. Erwartet eine Dienstadresse in einem der oben beschriebenen Formate. Hinzugefugt in Version 255. list-interfaces ADRESSE Zeigt eine Liste von durch den Dienst implementierten Schnittstellen. Erwartet eine Dienstadresse in einem der oben beschriebenen Formate. Hinzugefugt in Version 255. list-methods ADRESSE [SCHNITTSTELLE] Zeigt eine Liste der durch den angegebenen Dienst implementierten Methoden. Erwartet eine Diensteadresse in einem der oben beschriebenen Formate sowie einen oder mehrere Schnittstellennamen. Falls kein Schnittstellenname angegeben ist, werden alle durch den Dienst implementierten Methoden auf allen Schnittstellen aufgelistet, andernfalls nur die Methoden an der angegebenen Schnittstelle. Hinzugefugt in Version 257. introspect ADRESSE [SCHNITTSTELLE] Zeigt die Schnittstellendefinitionen der angegebenen Schnittstellen, die durch den angegebenen Dienst bereitgestellt wird. Erwartet eine Dienstadresse in einem der oben beschriebenen Formate und optional einen oder mehrere Varlink-Schnittstellennamen. Falls keine Schnittstellennamen angegeben sind, werden alle durch den Dienst bereitgestellten Schnittstellen angezeigt. Hinzugefugt in Version 255. call ADRESSE METHODE [ARGUMENTE] Ruft die angegebene Methode des angegebenen Dienstes auf. Erwartet eine Dienstadresse in den oben beschriebenen Formaten, einen vollstandig qualifizierten Varlink-Methodennamen und ein JSON-Argumentenobjekt. Falls das Argumentenobjekt nicht angegeben ist, wird es stattdessen von Stdin gelesen. Um eine leere Parameterliste zu ubergeben, geben Sie das leere Objekt >>{}<< an. Die Antwortparameter werden als JSON-Objekt nach Stdout geschrieben. Hinzugefugt in Version 255. validate-idl [DATEI] Liest eine Varlink-Schnittstellendefinitionsdatei, wertet sie aus, validiert sie und gibt sie mit Syntaxhervorhebung aus. Dies pruft auf Syntax und interne Konsistenz der Schnittstelle. Erwartet einen Dateinamen, aus dem die Schnittstellendefinition gelesen werden soll. Falls dieser fehlt, wird die Schnittstellendefinition von Stdin gelesen. Hinzugefugt in Version 255. help Zeigt die Hilfe zur Befehlssyntax. Hinzugefugt in Version 255. OPTIONEN Die folgenden Optionen werden verstanden: --more Bei der Verwendung mit call: Erwartet mehrere Methodenantworten. Falls dieser Schalter gesetzt ist, wird der Methodenaufruf mit gesetztem Schalter more gesandt. Dies teilt dem Dienst mit, falls notwendig, mehrere Antworten zu generieren. Der Befehl lauft, bis der Dienst eine Antwortnachricht sendet, die anzeigt, dass sie die letzte in der Serie ist (oder falls die konfigurierte Zeituberschreitung erreicht wird, siehe unten). Dieser Schalter sollte nur fur Methodenaufrufe gesetzt werden, die diesen Mechanismus unterstutzten. Falls dieser Modus aktiviert ist, wird die Ausgabe automatisch auf den JSON-SEQ-Modus umgeschaltet, so dass einzelne Antwortobjekte leicht unterschieden werden konnen. Dieser Schalter hat keine Auswirkung auf die standardmassig angewandte Methodenaufruf-Zeituberschreitung: Unabhangig davon, ob --more angegeben ist, wird die Standardzeituberschreitung 45 s sein. Verwenden Sie den (nachfolgend beschriebenen) --timeout=, um die Zeituberschreitung zu andern oder zu deaktivieren. Beim Aufruf eines Methodenaufrufs, der kontinuierlich Aktualisierungen zuruckliefert, ist es typischerweise wunschenswert, die Zeituberschreitung mit --timeout=infinity zu deaktivieren. Andererseits ist es typischerweise von Vorteil, beim Aufruf des Methodenaufrufs --more zum Zwecke der Aufzahlung von Objekten (was wahrscheinlich sehr schnell abgeschlossen ist), die Zeituberschreitungslogik aus Zwecken der Robustheit aktiviert zu lassen. Hinzugefugt in Version 255. -E Eine Abkurzung fur --more --timeout=infinity. Dieser Schalter ist fur Methodenaufrufe nutzlich, die ein Abonnement fur einen dauerhaften Datenstrom von Aktualisierungen implementieren. Hinzugefugt in Version 257. --collect Dies ist ahnlich zu --more, sammelt aber alle Antworten in einem JSON-Feld und gibt sie aus, anders als im Modus JSON_SEQ. Hinzugefugt in Version 256. --oneway Bei der Verwendung mit call wird keine Methodenantwort erwartet. Falls dieser Schalter gesetzt ist, wird der Methodenaufruf mit gesetztem Schalter oneway gesandt (der Befehl beendet sich direkt danach). Dies teilt dem Dienst mit, keine Antwort zu erstellen. Hinzugefugt in Version 255. --json=MODUS Wahlt die JSON-Ausgabeformatierung. Entweder >>pretty<< (fur schon eingeruckte, gefarbte Ausgabe) oder >>short<< (fur knappe Ausgabe mit minimalem Leerraum und keinen Zeilenumbruchen). Die Vorgabe ist >>short<<. Hinzugefugt in Version 255. -j Bei dem interaktiven Aufruf vom Terminal aquivalent zu --json=pretty. Andernfalls aquivalent zu --json=short, insbesondere wenn die Ausgabe mittels Pipe an ein anderes Programm weitergeleitet wird. Hinzugefugt in Version 255. --quiet, -q Untderdruckt die Ausgabe der Antworten von Methodenaufrufen. Hinzugefugt in Version 257. --graceful= Akzeptiert einen qualifizierten Varlink-Fehlernamen (d.h. einen Schnittstellenanmen mit angehangtem Fehlernamen, getrennt durch einen Punkt, z.B. >>org.varlink.service.InvalidParameter<<). Dies stellt sicher, dasss beim Fehlschlag eines Methodenaufrufs mit dem angegebenen Fehler dies als Erfolg behandelt wird, d.h. dazu fuhrt, dass der Aufruf von varlinkctl mit einem Exit-Status Null beendet wird. Diese Option kann mehr als einmal verwandt werden, um mehrere verschiedene Fehler als Erfolg zu behandeln. Hinzugefugt in Version 257. --timeout= Erwartet als Parameter eine Zeituberschreitung in Sekunden. Standardmassig wird eine Zeituberschreitung von 45 s durchgesetzt. Um die Zeituberschreitung auszuschalten, geben Sie >>infinity<< oder die leere Zeichenkette an. Hinzugefugt in Version 257. --no-pager Leitet die Ausgabe nicht an ein Textanzeigeprogramm weiter. -h, --help Zeigt einen kurzen Hilfetext an und beendet das Programm. --version Zeigt eine kurze Versionszeichenkette an und beendet das Programm. BEISPIELE Beispiel 1. Einen Dienst untersuchen Die folgenden drei Befehle untersuchen den durch systemd-resolved.service(8) implementierten Dienst >>io.systemd.Resolve<<. Sie listen allgemeine Dienstinformationen und Implementierungsschnittstellen auf und zeigen dann die Schnittstellendefinitionen seiner primaren Schnittstelle an: $ varlinkctl info /run/systemd/resolve/io.systemd.Resolve Vendor: The systemd Project Product: systemd (systemd-resolved) Version: 254 (254-1522-g4790521^) URL: https://systemd.io/ Interfaces: io.systemd io.systemd.Resolve org.varlink.service $ varlinkctl list-interfaces /run/systemd/resolve/io.systemd.Resolve io.systemd io.systemd.Resolve org.varlink.service $ varlinkctl introspect /run/systemd/resolve/io.systemd.Resolve io.systemd.Resolve interface io.systemd.Resolve type ResolvedAddress( ifindex: ?int, (Im obigen Beispiel wurden die Schnittstellendefinitionen im Interesse einer kurzen Darstellung abgeschnitten.) Beispiel 2. Aufruf einer Methode Der folgende Befehl lost einen Rechnernamen mittels des Methodenaufrufs ResolveHostname von systemd-resolved.service(8) auf. $ varlinkctl call /run/systemd/resolve/io.systemd.Resolve io.systemd.Resolve.ResolveHostname '{"name":"systemd.io","family":2}' -j { "addresses" : [ { "ifindex" : 2, "family" : 2, "address" : [ 185, 199, 111, 153 ] } ], "name" : "systemd.io", "flags" : 1048577 } Beispiel 3. Untersuchung des Programms eines Dienstes Der folgende Befehl untersucht das Programm /usr/lib/systemd/systemd-pcrextend und die von ihm bereitgestellten IPC-APIs. Dann ruft es eine Methode darauf aus: # varlinkctl info /usr/lib/systemd/systemd-pcrextend Vendor: The systemd Project Product: systemd (systemd-pcrextend) Version: 254 (254-1536-g97734fb) URL: https://systemd.io/ Interfaces: io.systemd io.systemd.PCRExtend org.varlink.service # varlinkctl introspect /usr/lib/systemd/systemd-pcrextend io.systemd.PCRExtend interface io.systemd.PCRExtend method Extend( pcr: int, text: ?string, data: ?string ) -> () # varlinkctl call /usr/lib/systemd/systemd-pcrextend io.systemd.PCRExtend.Extend '{"pcr":15,"text":"foobar"}' {} Beispiel 4. Aufruf einer Methode aus der Ferne mittels SSH Der folgende Befehl erlangt einen Bericht uber die Identitat des fernen Rechners >>einemaschine<< von systemd-hostnamed.service(8) durch Verbindung mittels SSH an das AF_UNIX-Socket, auf dem der Dienst auf Anfragen wartet: # varlinkctl call ssh-unix:einemaschine:/run/systemd/io.systemd.Hostname io.systemd.Hostname.Describe '{}' Um das Varlink-Diensteprogramm direkt auf dem fernen Rechner aufzurufen, konnen Sie folgendes anstelle der Kommunikation mit dem Dienst uber AF_UNIX durchfuhren: # varlinkctl call ssh-exec:einemaschine:/usr/bin/systemd-creds org.varlink.service.GetInfo '{}' SIEHE AUCH busctl(1), Varlink[1] ANMERKUNGEN 1. Varlink https://varlink.org/ UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . systemd 257 VARLINKCTL(1)