\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{jeu. mars 31 13:50:47 CEST 2016}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={busctl},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Examiner et superviser le bus D-Bus},
CreationDate={D:20160331135047},
ModDate={D:20160331135047},
Keywords={systemd;Linux;boot}
}}
\begin{document}
 
\begin{center}
{\Huge busctl }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Examiner et superviser le bus D-Bus}
 
\vspace{10mm}
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} --address=ADDRESS]{Se connecte au bus spécifié par l'adresse au lieu d'utiliser celui par défaut}
\item[\hspace{1mm} --show-machine]{En affichant la liste des paires, affiche une colonne contenant les noms des conteneurs auxquels ils appartiennent.}
\item[\hspace{1mm} --unique]{En affichant la liste des paires, afficher seulement les noms uniques (sous la forme :number.number)}
\item[\hspace{1mm} --acquired]{L'opposé de --unique. Uniquement les noms connus sont affichés.}
\item[\hspace{1mm} --activatable]{En affichant la liste des paires, affiche seulement les paires qui ne sont pas encore activés, mais peuvent être démarrés automatiquement si accédés.}
\item[\hspace{1mm} --match=MATCH]{En affichant les messages échangés, affiche seulement le sous-jeu correspondant au match}
\item[\hspace{1mm} --size=]{Utilisé avec la commande capture, spécifie la taille de message bus max à capturer. Défaut: 4096}
\item[\hspace{1mm} --list]{Utilisé avec la commande tree, affiche une liste plate de chemins d'objets au lieu d'une arborescence.}
\item[\hspace{1mm} -quiet]{Utilisé avec la commande call, supprime l'affichage du payload de réponse. Noter que cela n'empêche pas les erreurs retournées d'être affichés.}
\item[\hspace{1mm} --verbose]{Avec les commandes call et get-property, affiche dans un format plus verbeux}
\item[\hspace{1mm} --expect-reply=BOOL]{Utilisé avec la commande call, spécifie si busctl devrait attendre la fin du call de méthode, afficher la donnée de la réponse de la méthode, et retourne un succès ou un échec via de code de sortie du process. Défaut: yes}
\item[\hspace{1mm} --auto-start=BOOL]{Utilisé avec la commande call, spécifi si le call de méthode devrait implicitement activer le service appelé, qui ne devrait pas être encore en cours d'exécution mais est configuré en auto-start. Défaut: yes}
\item[\hspace{1mm} --allow-interactive-authorization=BOOL]{Utilisé avec la commande call, spécifie si les services peuvent forcer l'autorisation interactive tout en exécutant l'opération, si la stratégie de sécurité est configurée pour cela. Défaut: yes}
\item[\hspace{1mm} --timeout=SECS]{Utilisé avec la commande call, spécifie le temps max d'attente pour la fin du call de methode. Par défaut, assume des secondes (peut être spécifié avec ms, us, s, min, h, d, w, month, y). Noter que ce timeout ne s'applique pas si --expect-reply=no est utilisé. Défaut: 25s.}
\item[\hspace{1mm} --augment-creds=BOOL]{Contrôle si les données d'accréditifs reportées par list ou status devraient être augmenté avec les données de /proc. Activé, les données affichées peuvent être inconsistantes, vu que les données dans /proc peuvent être plus récentes que le reste des informations d'accréditifs. Défaut: yes}
\item[\hspace{1mm} --user]{Dialogue avec le gestionnaire de service de l'utilisateur appelant, au lieu du gestionnaire de service système.}
\item[\hspace{1mm} --system]{Dialogue avec le gestionnaire de service système.}
\item[\hspace{1mm} -H, --host=]{Exécute l'opération à distance. Spécifie un nom d'hôte, ou un nom d'utilisateur est un nom d'hôte séparé par un @ pour s'y connecter. Le nom d'hôte peut optionnellement être suffixé par un nom de conteneur, séparé par un :, qui connecte directement au conteneur spécifique sur l'hôte spécifié. Il utilise ssh pour dialoguer avec une instance de gestionnaire de machine. Les noms de conteneur peuvent être énumérés avec machinectl -H <host>}
\item[\hspace{1mm} -M, --machine=]{Exécute l'opération dans un conteneur local. Spécifie un nom de conteneur}
\item[\hspace{1mm} --no-pager]{Ne sort pas la sortie dans un pager}
\item[\hspace{1mm} --no-legend]{N'affiche pas la légende (en-tête et pied de page)}
\end{description}
 
\vspace{1cm}{\huge Commandes }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} list]{Affiche tous les paires sur le bus, par noms de service. Par défaut, affiche tous les noms.}
\item[\hspace{1mm} status \texttt{[}SERVICE\texttt{]}]{Affiche les information de processus et d'accréditifs d'un service, un processus, ou le propriétaire du bus.}
\item[\hspace{1mm} monitor \texttt{[}SERVICE...\texttt{]}]{Dump les message échangés. Si SERVICE est spécifié, affiche les message vers et depuis ce paire. Sinon affiche tous les messages sur le bus.}
\item[\hspace{1mm} capture \texttt{[}SERVICE...\texttt{]}]{Similaire à monitor mais écris la sortie au format pcap.}
\item[\hspace{1mm} tree \texttt{[}SERVICE...\texttt{]}]{Affiche une arborescence d'objet d'un ou plusieurs services. Si SERVICE est spécifié, affiche l'arborescence d'objet des services spécifiés, sinon affiche toutes les arborescences sur le bus.}
\item[\hspace{1mm} introspect SERVICE OBJECT \texttt{[}INTERFACE\texttt{]}]{Affiche les interfaces, méthodes, propriétés et signaux de l'objet spécifié (identifié par son chemin) sur le service spécifié. Si l'argument interface est passé, la sortie est limitée aux membres de l'interface spécifiée.}
\item[\hspace{1mm} call SERVICE OBJECT INTERFACE METHOD \texttt{[}SIGNATURE \texttt{[}ARGUMENT...\texttt{]}\texttt{]}]{Invoque une méthode et affiche la réponse. Prend un nom de service, un chemin d'objet, nom d'interface et nom de méthode. Si les paramètres doivent être passés à l'appel de la méthode, une chaîne signature est requise, suivie par les arguments, individuellement formatés comme chaîne. Pour les détails du format utilisé, voir plus bas. Pour supprimer la sortie de la donnée retournée, utiliser l'option --quiet.}
\item[\hspace{1mm} get-property SERVICE OBJECT INTERFACE PROPERTY...]{Récupère la valeur courante d'une ou plusieurs propriétés d'objet. Plusieurs propriétés peuvent être spécifiés à la fois.}
\item[\hspace{1mm} set-property SERVICE OBJECT INTERFACE PROPERTY SIGNATURE ARGUMENT...]{Définis la valeurs courante d'une propriété d'objet.}
\end{description}
 
\vspace{1cm}{\huge Format de paramètres }
 
\
 
\hspace{1mm}  Les commandes call et set-property prennent une chaîne signature suivie par une liste de paramètres formatés comme chaîne (voir la spécification D-Bus pour les chaînes de signature). Pour les types simple, chaque paramètre suivant la signature devrait simplement être la valeur du paramètre formaté comme chaîne. les valeurs booléennes peuvent être formatées en "true", "yes", "on", ou "1". Pour les tableaux, un argument numérique pour le nombre d'entrées doit être spécifié. Pour les variantes, la signature du contenu doit être spécifié, suivi par le contenu. Pour les dictionnaires et structures, le contenu doit être spécifié directement.
\vspace{5mm} \\
 
 
\hspace{1mm} formater une simple chaîne "jawoll" \\
\hspace{1mm} \textbf{s jawoll} \\
\hspace{1mm} formater un tableau de chaîne avec 2 entrées: \\
\hspace{1mm} \textbf{as 3 hello world foobar} \\
\hspace{1mm} formater un tableau dictionnaire qui map les chaînes en variantes, consistant de 3 entrées. La chaîne "One" est assignée à la chaîne "Eins". "Two" à l'entier 32-bits 2, Yes est assigné comme booléen positif: \\
\hspace{1mm} \textbf{a\{sv\} 3 One s Eins Two u 2 Yes b true} \\
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} Les 2 commandes suivantes écrivent d'abord une propriété puis la lisent. La propriété est trouvée dans l'objet /org/freedesktop/systemd1 du service org.freedesktop.systemd1. Le nom de la propriété est "LogLevel" sur l'interface "org.freedesktop.systemd1.Manager". \\
\hspace{1mm} \textbf{busctl set-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager LogLevel s debug} \\
\hspace{1mm} \textbf{busctl get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager LogLevel s "debug"} \\
\hspace{1mm} Les 2 commandes suivantes lisent une propriété qui contient un tableau de chaînes, et affichent d'abords au format simple, puis au format verbeux \\
\hspace{1mm} \textbf{busctl get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager Environment} \\
\hspace{1mm} \textbf{as 2 "LANG=en\_US.UTF-8" "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"} \\
\hspace{1mm} \textbf{busctl get-property --verbose org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager Environment} \\
\hspace{1mm} \textbf{ARRAY "s" \{} \\
\hspace{1mm} \textbf{STRING "LANG=en\_US.UTF-8";} \\
\hspace{1mm} \textbf{STRING "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin";} \\
\hspace{1mm} \textbf{\};} \\
\hspace{1mm} La commande suivante invoque une méthode StartUnit sur l'interface org.freedesktop.systemd1.Manager de l'objet org/freedesktop/systemd1 du service org.freedesktop.systemd1, et lui passe 2 chaînes cups.service et replace. \\
\hspace{1mm} \textbf{busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager StartUnit ss "cups.service" "replace"} \\
\hspace{1mm} \textbf{o "/org/freedesktop/systemd1/job/42684"} \\
\end{flushleft}
\end{document}
