Передача сигналов из гостя хосту
Есть гостевая система линуксовая. Как при нажатии, например, на ctrl+L передать сигнал на хост на винде, чтобы блокировка экрана произошла на хосте?
Надо чтобы блокировка была именно на уровне хоста, чтобы нельзя было получить доступ к компьютеру просто свернув виртуалку.
Ответы (1 шт):
В сессии пользователя на гостевой системе нужно написать программу.
Подключаешься к dbus и ждешь сигнал org.gnome.ScreenSaver.ActiveChanged или org.freedesktop.ScreenSaver.ActiveChanged
Или системный сервис который слушет систеный service org.freedesktop.login1, path /org/freedesktop/login1/session/auto, interface org.freedesktop.login1.Session, signal Lock (но он пока не готов)
Дальше отправляешь текст в COM порт что сессия залоченна.
На хост системе подключаешься к виртуальному COM порту (хост-канал в идеале, но проще по TCP) и ждешь этого слова. По нему выполняешь блокировку экрана запустив команду.
Для простоты реализации гостевого агента можно отправить вывод dbus-monitor в ком порт.
dbus-monitor --system "type='signal',interface='org.freedesktop.login1.Session',member='Lock'"\
> /dev/ttyS1
Но на хосте всеравно прийдется программировать, чтоб распарсить сигнал.