Использование альтернативного механизма сброса сессий
Использование альтернативного механизма сброса сессий
Для корректной работы функционала сброса сессий при подключении пользователя по протоколу SPICE к ВРМ, опубликованным на платформе ПК СВ Брест, нужно выполнить настройку:
- на узлах платформы виртуализации добавить пользователя
rootв группыlibvirtиlibvirt-admin, и перезапустить службуopennebula:
sudo usermod -a -G libvirt root sudo usermod -a -G libvirt-admin root sudo systemctl restart opennebula
- активировать использование альтернативного механизма сброса сессий для Агента УВ, как приведено ниже.
Для использования альтернативного механизма сброса сессий:
- создать исполняемый файл, который должен реализовать механизм сброса сессий, например,
/etc/termidesk/script.sh. Содержимое исполняемого файла приведено ниже для примера; - задать исполняемому файлу флаг выполнения:
sudo chmod +x /etc/termidesk/script.sh
- создать каталог
/etc/termidesk/:
sudo mkdir /etc/termidesk
- изменить права на каталог:
sudo chmod 755 /etc/termidesk
- создать конфигурационный файл
/etc/termidesk/termidesk-vmsd.conf:
sudo touch /etc/termidesk/termidesk-vmsd.conf
- изменить права на файл:
sudo chmod 644 /etc/termidesk/termidesk-vmsd.conf
- установить переменную
LIBVIRT_PASSWORD_SCRIPT, определив ее в конфигурационном файле/etc/termidesk/termidesk-vmsd.conf. Переменная должна содержать путь к исполняемому файлу:
LIBVIRT_PASSWORD_SCRIPT=/etc/termidesk/script.sh
Пример содержимого исполняемого файла для сброса сессий:
#!/bin/sh
#linux-cli$ /path/to/script --protocol=spice --password=no_password --connected=disconnect sun-123
# где
#--protocol возможные варианты протокола [spice|vnc]
#--password пароль подключения
#--connected действия [ keep | disconnect | fail ]
VM_PROTOCOL=""
VM_PASSWORD=""
VM_CONNECTED=""
VM_ID=""
if [ -z "${1}" ]; then
echo "Не заданы параметры"
fi
while [ -n "${1}" ]; do
case "$(echo "${1}" | cut -d'=' -f1)" in
--protocol)
VM_PROTOCOL="$(echo "${1}" | cut -d'=' -f2)"
;;
--connected)
VM_CONNECTED="$(echo "${1}" | cut -d'=' -f2)"
;;
--password)
VM_PASSWORD="$(echo "${1}" | cut -d'=' -f2)"
;;
*)
[ "$(echo "${1}" | grep -i "one-")" ] && VM_ID="${1}"
;;
esac
shift
done
if [ -n "$(echo "$VM_CONNECTED" | grep -i "disconnect")" ]; then
IP_PORT=$(ps ax| grep -i "guest=${VM_ID}[^0-9]" | grep -v grep | sed -E -e "s/.*[[:space:]]+\-${VM_PROTOCOL}[[:space:]]+//" | cut -d' ' -f1 | sed "s/port=//" | cut -d',' -f1)
echo "VM SPICE port: $IP_PORT"
if [ "$IP_PORT" ]; then
ss --kill -t src :${IP_PORT}
fi
fi