Manchmal möchte man Befehle “von außen” in VMs ausführen. Bei qemu/kvm bietet sich hierzu der qemu-guest-agent an. Sehr praktisch kann das zum Beispiel bei Appliances wie Home-Assistant sein, bei denen man nicht unbedingt Shell-Zugriff hat. Will man zum Beispiel schauen, welche Docker-Container in der Home-Assistant VM laufen, kann man einfach vom KVM-Host aus über den laufenden Guest-Agent den Befehl docker ps ausführen.

~ # virsh qemu-agent-command hassio01 \
  '{"execute":"guest-exec","arguments":{"path":"/bin/bash","arg": ["-c", "docker ps"], "capture-output": true}}'
{"return":{"pid":6545}}

Um die Ausgabe sichtbar zu machen benötigt man noch einen weiteren Befehl.

~ # virsh qemu-agent-command hassio01 \
  '{"execute":"guest-exec-status", "arguments": { "pid": 6545 }}' | \
  jq '.return."out-data"' | tr -d "\"" | base64 -d
CONTAINER ID   IMAGE                                                      COMMAND   CREATED             STATUS             PORTS                                   NAMES
6c7ad068b61c   homeassistant/amd64-addon-configurator:5.5.0               "/init"   About an hour ago   Up About an hour                                           addon_core_configurator
47e955cfe7a1   homeassistant/amd64-addon-ssh:9.6.1                        "/init"   2 hours ago         Up 2 hours         0.0.0.0:22->22/tcp, :::22->22/tcp       addon_core_ssh
7ce0ee250150   ghcr.io/home-assistant/qemux86-64-homeassistant:2023.2.2   "/init"   3 hours ago         Up 3 hours                                                 homeassistant
33ed0c39c058   ghcr.io/home-assistant/amd64-hassio-supervisor:latest      "/init"   3 hours ago         Up 3 hours                                                 hassio_supervisor
c1c8a5dbf66a   ghcr.io/home-assistant/amd64-hassio-multicast:2022.02.0    "/init"   3 hours ago         Up 3 hours                                                 hassio_multicast
c1666b1b2666   ghcr.io/home-assistant/amd64-hassio-observer:2021.10.0     "/init"   3 hours ago         Up 3 hours         0.0.0.0:4357->80/tcp, :::4357->80/tcp   hassio_observer
739aa2d1879c   ghcr.io/home-assistant/amd64-hassio-audio:2022.07.0        "/init"   3 hours ago         Up 3 hours                                                 hassio_audio
ca92a77730ac   ghcr.io/home-assistant/amd64-hassio-dns:2022.04.1          "/init"   3 hours ago         Up 3 hours                                                 hassio_dns
c7f2cdf409a3   ghcr.io/home-assistant/amd64-hassio-cli:2022.11.0          "/init"   3 hours ago         Up 3 hours                                                 hassio_cli