Есть два основных способа сделать это и обходной путь:
Либо вам нужно изменить /usr/share/polkit-1/actions/org.freedesktop.upower.policy, установить переменную среды XDG_SESSION_COOKIE в соответствующее значение, либо использовать pm-suspend: [ ! d1]
Применить этот патч:
--- /usr/share/polkit-1/actions/org.freedesktop.upower.policy.orig 2011-11-16 19:06:59.274055248 +0100
+++ /usr/share/polkit-1/actions/org.freedesktop.upower.policy 2011-11-16 19:11:15.178864922 +0100
@@ -21,6 +21,7 @@
<defaults>
<allow_inactive>no</allow_inactive>
<allow_active>yes</allow_active>
+ <allow_any>yes</allow_any>
</defaults>
</action>
(К тегу / секции <action id="org.freedesktop.upower.suspend">), и он тоже будет работать. .
или
Когда вы используете рабочий стол, вы увидите, что $XDG_SESSION_COOKIE имеет одно значение, но в ssh сеанс, у него есть другой. Хранить XDG_SESSION_COOKIE, например. в .dotfile или что-то при запуске настольного компьютера и отправьте его в свой скрипт, который должен сделать это через ssh.
Или вы могли бы просто отказаться от этого с dbus и UPower и просто выпустить pm-suspend как root и получить его! : -
)