- trixie 4.27.0-1
- trixie-backports 4.31.0-1~bpo13+1
- testing 4.31.0-1
- unstable 4.31.0-1
| VARLINKCTL(1) | varlinkctl | VARLINKCTL(1) |
BEZEICHNUNG¶
varlinkctl - Varlink-Diensten untersuchen und aufrufen
ÜBERSICHT¶
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…] --exec call ADRESSE METHODE ARGUMENTE -- BEFEHLSZEILE
varlinkctl [OPTIONEN…] serve METHODE {BEFEHLSZEILE…}
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:
Für mehr Komfort werden diese zwei einfacheren (redundanten) Diensteadressyntaxen auch unterstützt:
BEFEHLE¶
Die folgenden Befehle werden verstanden:
info ADRESSE
Hinzugefügt in Version 255.
list-interfaces ADRESSE
Hinzugefügt in Version 255.
list-methods ADRESSE [SCHNITTSTELLE…]
Hinzugefügt in Version 257.
introspect ADRESSE [SCHNITTSTELLE…]
Hinzugefügt in Version 255.
call ADRESSE METHODE [ARGUMENTE]
Die Antwortparameter werden als JSON-Objekte nach Stdout geschrieben.
Hinzugefügt in Version 255.
serve METHODE BEFEHLSZEILE…
The listening socket must be passed via socket activation (i.e. the $LISTEN_FDS protocol), making this command suitable for use in socket-activated service units. When a client calls the specified method with the upgrade flag, the server sends a reply confirming the upgrade, then forks and executes the given command line with the upgraded connection on its standard input and output.
This effectively turns any command that speaks a protocol over standard input/output into a Varlink service, discoverable via the service registry and authenticated via socket credentials. Because each connection is handled by a forked child process, the service unit can apply systemd's sandboxing options (such as ProtectSystem=, etc.) and does not operate in the caller's environment.
Hinzugefügt in Version 261.
list-registry
Hinzugefügt in Version 260.
validate-idl [DATEI]
Hinzugefügt in Version 255.
help
Hinzugefügt in Version 255.
OPTIONEN¶
Die folgenden Optionen werden verstanden:
--more
Falls dieser Modus aktiviert ist, wird die Ausgabe automatisch auf den JSON-SEQ-Modus umgeschaltet, so dass einzelne Antwortobjekte leicht unterschieden werden können.
Dieser Schalter hat keine Auswirkung auf die standardmäßig angewandte Methodenaufruf-Zeitüberschreitung. Unabhängig davon, ob --more angegeben ist, wird die Standardzeitüberschreitung 45 s sein. Verwenden Sie den (nachfolgend beschriebenen) --timeout=, um die Zeitüberschreitung zu ändern oder zu deaktivieren. Beim Aufruf eines Methodenaufrufs, der kontinuierlich Aktualisierungen zurückliefert, ist es typischerweise wünschenswert, die Zeitüberschreitung mit --timeout=infinity zu deaktivieren. Andererseits ist es typischerweise von Vorteil, beim Aufruf des Methodenaufrufs --more zum Zwecke der Aufzählung von Objekten (was wahrscheinlich sehr schnell abgeschlossen ist), die Zeitüberschreitungslogik aus Zwecken der Robustheit aktiviert zu lassen.
Hinzugefügt in Version 255.
-E
Hinzugefügt in Version 257.
--collect
Hinzugefügt in Version 256.
--oneway
Hinzugefügt in Version 255.
--upgrade
If --exec is not specified, varlinkctl acts as a bidirectional proxy: data read from standard input is forwarded to the upgraded connection, and data received from the connection is written to standard output.
If --exec is specified, the upgraded connection socket is placed on both standard input and standard output of the invoked process. This is similar to the regular --exec behavior (without --upgrade), which places the method call reply on standard input. The invoked process can thus simply read from and write to stdin/stdout to communicate over the upgraded protocol.
This option may not be combined with --more, --oneway, --collect, --graceful=, or --push-fd=.
Hinzugefügt in Version 261.
--json=MODUS
Hinzugefügt in Version 255.
-j
Hinzugefügt in Version 255.
--quiet, -q
Hinzugefügt in Version 257.
--graceful=
Hinzugefügt in Version 257.
--timeout=
Hinzugefügt in Version 257.
--exec
Beachten Sie, dass bei der Angabe von --exec der dritte Parameter für call nicht optional ist (d.h. die Methodenaufrufparameter).
Hinzugefügt in Version 258.
--push-fd=
Hinzugefügt in Version 258.
--system, --user
Hinzugefügt in Version 260.
--no-ask-password
--no-pager
-h, --help
--version
DATEIEN UND VERZEICHNISSE¶
/run/varlink/registry/
Verwenden Sie varlinkctl list-registry, um den Inhalt dieses Verzeichnisses anzuzeigen.
(Inodes, die weder als Socket-Inodes noch als Symlinks auf sie befähigt sind, werden ignoriert. Eine zukünftige Erweiterung könnte reguläre Dateien und Verzeichnisse einführen, um die Registraturfunktionalität zu erweiteren.)
Hinzugefügt in Version 260.
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 primären 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 löst 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 über die Identität 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, können Sie folgendes anstelle der Kommunikation mit dem Dienst über AF_UNIX durchführen:
# varlinkctl call ssh-exec:einemaschine:systemd-creds org.varlink.service.GetInfo '{}'
Example 5. Serving a Sandboxed Decompressor via Protocol Upgrade
The following socket and service units expose xz decompression as a Varlink service. Clients connect and send compressed data over the upgraded connection, receiving decompressed output in return.
# /etc/systemd/system/varlink-decompress-xz.socket [Socket] ListenStream=/run/varlink/registry/com.example.Decompress.XZ [Install] WantedBy=sockets.target # /etc/systemd/system/varlink-decompress-xz.service [Service] ExecStart=varlinkctl serve com.example.Decompress.XZ xz -d DynamicUser=yes PrivateNetwork=yes ProtectSystem=strict ProtectHome=yes NoNewPrivileges=yes SystemCallFilter=~@privileged @resources MemoryMax=256M
A client can then decompress data through this service:
$ echo "Hallo" | xz | varlinkctl call --upgrade \
unix:/run/varlink/registry/com.example.Decompress.XZ \
com.example.Decompress.XZ '{}' Hallo
For quick testing without unit files, systemd-socket-activate can be used to provide the listening socket:
$ systemd-socket-activate -l /tmp/decompress.sock -- varlinkctl serve com.example.Decompress.XZ xz -d &
$ echo "Hallo" | xz | varlinkctl call --upgrade unix:/tmp/decompress.sock com.example.Decompress.XZ '{}'
Hallo
SIEHE AUCH¶
busctl(1), Varlink[1]
ANMERKUNGEN¶
- 1.
- Varlink
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.
| systemd 261~rc3 |