Диагностика доступа к консоли ВМ на примере протокола SPICE

При работе ВМ на хосте в каталоге /run/libvirt/qemu создаются файлы конфигураций:

ls -l /run/libvirt/qemu/
-rw-------. 1 root root     4 авг  4 16:50 deb_storage_sz.pid
-rw-------. 1 root root 18049 авг 20 10:02 deb_storage_sz.xml
-rw-------. 1 root root     5 авг 18 15:21 host2_infoland_SZ.pid
-rw-------. 1 root root 24091 авг 20 14:40 host2_infoland_SZ.xml
-rw-------. 1 root root     5 апр  4 01:13 HostedEngine.pid
-rw-------. 1 root root 20263 апр  4 01:13 HostedEngine.xml
...

Файл pid содержит в себе информацию о номере процесса:

cat /run/libvirt/qemu/HostedEngine.pid
17851

Узнать открытые сокеты/порты процесса можно командой:

ss -tulpan | grep 17851
tcp LISTEN 0 128 172.26.27.100:5900 *:* users:(("qemu-kvm",pid=17851,fd=22))
tcp LISTEN 0 128 172.26.27.100:5901 *:* users:(("qemu-kvm",pid=17851,fd=23))
tcp LISTEN 0 1   172.26.27.100:5902 *:* users:(("qemu-kvm",pid=17851,fd=52))

Узнать информацию об используемых портах можно из XML файла:

grep tlsPort /run/libvirt/qemu/HostedEngine.xml
<graphics type='spice' port='5900' tlsPort='5901' autoport='yes' listen='172.26.27.100' passwd='*****' passwdValidTo='1970-01-01T00:00:01'>

Как видно, для доступа к ВМ по протоколу SPICE используется 5901 порт.

По номеру процесса можно провести диагностику запуска ВМ:

#strings /proc/17851/cmdline
...

-spice \
port=5900,tls-port=5901,addr=172.26.27.100,x509-dir=/etc/pki/vdsm/libvirt-spice,tls-channel=main,tls-channel=display,tls-channel=inputs,tls-channel=cursor,tls-channel=playback,tls-channel=record,tls-channel=smartcard,tls-channel=usbredir,seamless-migration=on
...

Для автоматизации можно использовать скрипт для диагностики:

for i in $(ls /run/libvirt/qemu/*.pid); do ls $i \
	| xargs -I % sh -c 'FILE=$(basename %) && PID=$(cat %) \
	&& PORT=$(strings /proc/$PID/cmdline | grep tls-port) && echo "$FILE: $PORT"'; done

Вывод содержит следующую информацию:

deb_storage_sz.pid: port=5903,tls-port=5904,addr=172.26.27.100,x509-dir=/etc/pki/vdsm/libvirt-spice,tls-channel=main,tls-channel=display,tls-channel=inputs,tls-channel=cursor,tls-channel=playback,tls-channel=record,tls-channel=smartcard,tls-channel=usbredir,seamless-migration=on`

host2_infoland_SZ.pid: port=5913,tls-port=5915,addr=172.26.27.100,x509-dir=/etc/pki/vdsm/libvirt-spice,tls-channel=main,tls-channel=display,tls-channel=inputs,tls-channel=cursor,tls-channel=playback,tls-channel=record,tls-channel=smartcard,tls-channel=usbredir,seamless-migration=on

HostedEngine.pid: port=5900,tls-port=5901,addr=172.26.27.100,x509-dir=/etc/pki/vdsm/libvirt-spice,tls-channel=main,tls-channel=display,tls-channel=inputs,tls-channel=cursor,tls-channel=playback,tls-channel=record,tls-channel=smartcard,tls-channel=usbredir,seamless-migration=on