Разблокировать экран входа в систему с помощью командной строки

30

Можно ли разблокировать экран входа в оболочку 13.04 Gnome из командной строки? Пользователь вошел в оболочку Gnome, я могу войти в консоль как этот пользователь. У меня также есть root-доступ.

Это для доступа к активному дисплею X11 через VNC, без необходимости ввода пароля.

проведение

gnome-screensaver-command -d

как предложено в сообщении в блоге , не помогло.

экран входа

krlmlr
источник
Ssh выдает какой-либо вывод или ошибку?
Брайам
@Braiam: я могу ssh, это не проблема. Он предназначен для доступа к активному дисплею X11 через VNC, но без необходимости ввода пароля.
13

Ответы:

33

Я предполагаю, что у вас есть последняя система Linux с systemd(например, Ubuntu 16.04 или новее).

Если вам нужно разблокировать свой собственный сеанс , просто запустите loginctl unlock-session(без рута, потому что это ваш собственный сеанс). Если у вас есть несколько сеансов и вы хотите выбрать только один, запустите loginctl list-sessionsдля определения сеанса, а затем запустите, например loginctl unlock-session c187.

Если вам нужно разблокировать все сессии , просто запустите sudo loginctl unlock-sessions. Обратите внимание, что это немедленно разблокирует ВСЕ сеансы, независимо от того, какой пользователь запускает экранную заставку.


Если вам нужна дополнительная информация для определения правильного сеанса, вы можете попробовать что-то вроде этого:

loginctl list-sessions --no-legend | while read id rest; do echo; loginctl show-session $id; done
Микко Ранталайнен
источник
3
Это единственный ответ, который работает 16.04
lemonsqueeze
Судя
1
Вам нужно, sudoесли вы хотите разблокировать экранные заставки ВСЕХ сеансов (включая сеансы, не запущенные с вашим идентификатором пользователя).
Микко Ранталайнен
Также обратите внимание на последний sв unlock-sessions. Если вы хотите разблокировать только свой собственный сеанс, просто сделайте loginctl unlock-session.
Микко Ранталайнен
2
Это должен быть принятый ответ!
Брайс
16

Проблема с выполнением команд, подобных gnome-screensaver-commandсеансу SSH, обычно заключается в том, что они не подключаются автоматически к соответствующей сеансовой шине для активного сеанса рабочего стола - обычно, установка переменной DISPLAY исправит это, например, это работает для меня (вошел в систему через SSH как тот же пользователь, которому принадлежит заблокированный сеанс X, который находится на DISPLAY: 0):

$ DISPLAY=:0 gnome-screensaver-command -d

разблокировать и

$ DISPLAY=:0 gnome-screensaver-command -l

закрывать.

Кроме того, вы можете переключать активное состояние с помощью dbus-send- например,

$ export DISPLAY=:0
$ dbus-send --session \
          --dest=org.gnome.ScreenSaver \
          --type=method_call \
          --print-reply \
          --reply-timeout=20000 \
          /org/gnome/ScreenSaver \
          org.gnome.ScreenSaver.SetActive \
          boolean:false

Источник: https://people.gnome.org/~mccann/gnome-screensaver/docs/gnome-screensaver.html#gs-examples

steeldriver
источник
1
К сожалению, ни один из этих методов не разблокировал конкретную блокировку экрана, установленную в моей системе (см. Скриншот). Как я могу найти, какой процесс отвечает за блокировку экрана в любом случае?
13
1
Команды возвращают ошибку? Если так, пожалуйста, отправьте это. Чтобы увидеть, работает ли другая заставка, вы можете попробовать ps -fu <username> | grep saver- возможно, xscreensaverона используется вместо gnome-screensaver, и в этом случае вы можете попробовать DISPLAY=:0 xscreensaver-command -deactivate.
Steeldriver
1
Я проверил этот ответ на Ubuntu 14.04. Не работает Он разблокирует экран, но экран остается заблокированным.
Касперд
5

У меня сработало следующее:

sudo killall gnome-screensaver

Особенно полезно, когда вы вошли через SSH с другим пользователем.

Rosch
источник
Подтверждено, у меня была эта проблема, когда клавиатура не печатала на экране разблокировки, но смогла переключиться на терминал, используя CTRL + ALT + F3, и этот убийца заставок помог. Тогда я просто отправил CTRL + ALT + F2 обратно на сеанс, который был заблокирован :)
jave.web
Это работает, когда X2Go показывает экран блокировки и не отвечает :)
endolith
1

У меня была проблема с зависанием блокировки экрана (заставки) в GNOME 3 на пустом экране. Мне удалось обойти это, заменив оконный менеджер gnome-shell.

Ctrl + Alt + F1 и войдите в виртуальную консоль, затем:

pkill -QUIT gnome-shell
DISPLAY=:0.0 gnome-shell -r &

( &Создает фон новой оболочки gnome, чтобы вы могли выйти из виртуальной консоли и сохранить ее работоспособной. В качестве альтернативы используйте Ctrl + Z, чтобы приостановить процесс оболочки gnome и bgсоздать его фон).

Это может быть не элегантно, но в конечном итоге это позволило мне вернуться к настольным приложениям, не заставляя гнома выйти из системы.

Тед Персиваль
источник
Спасибо, попробую и посмотрю, gnome-shellработает ли перезапуск у меня.
krlmlr
1

У меня была похожая проблема, когда экран разблокировки иногда не принимал ввод с клавиатуры. В итоге я решил убить несколько gnome-screensaver запущенных процессов, а также один gnome-screensaver-dialogпроцесс. Я предполагаю, что какой бы процесс не порождал 2 сеанса скринсейвера гномов, это испортило мой экран разблокировки. Я на самом деле должен был использовать вместо xscreensaver, так что, может быть, это не так.

В любом случае, Ctrl+Alt+F1найдите запущенные процессы заставки ps -aux | grep screenи убейте их всех. Команды gnome и xscreensaver, перечисленные в других ответах, не сработали для меня.

Скотт
источник