Как я могу очистить экран от командной строки через SSH?

12

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

Дополнение: Было бы хорошо, если бы команда работала в Ubuntu, Lubuntu и Xubuntu.

Дополнение 2: У меня также есть проектор, который необходимо отключить. Я хочу использовать SSH для подключения к моему серверу и показать пустой экран. Если я пытаюсь выключить проектор, на экране отображается «Нет сигнала».

JPX
источник

Ответы:

16

Короткий ответ:

xrandr --output DVI-I-1 --brightness 0

где имя DVI-I-1вашего экрана.

Наоборот:

xrandr --output DVI-I-1 --brightness 1

снова установить на нормальную яркость.

Чтобы получить имя экрана

Просто запустите команду:

xrandr

В выводе вы найдете имя экрана, в строке, в том числе connected

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

Сценарий может быть использован для установки (всех) подключенных экранов на черный и наоборот. Скрипт находит ваши экраны автоматически.

#!/usr/bin/env python3
import subprocess
import sys

arg = sys.argv[1]

screens = [l.split()[0] for l in subprocess.check_output("xrandr").decode("utf-8").splitlines()
           if " connected" in l]

val = "0" if arg == "black" else "1"
for s in screens:
    subprocess.Popen(["xrandr", "--output", s, "--brightness", val])

Бежать

  • Скопируйте скрипт в пустой файл, сохраните его как set_black.py
  • Запустите его либо с:

    python3 /path/to/set_black.py black
    

    затемнить экран, или

    python3 /path/to/set_black.py normal
    

    снова установить яркость на нормальную.


В то время как ответ выше должен нормально работать на всех дистрибутивах Ubuntu локально , вопрос оказывается на ssh / remote (информация была отредактирована в вопросе).

В случае удаленной ситуации нам нужно правильно установить $DISPLAYпеременную. Если переменная отображения, например :0, нам нужно запустить скрипт с:

DISPLAY=:0 python3 /path/to/script.py black

Переменная не обязательно, :0хотя. Этот пост, посвященный U & L, кажется отличным, задает DISPLAYпеременную на удаленной машине.

Якоб Влейм
источник
Но разве вам не придется слепо набирать команду, чтобы вернуть ее?
YouAGitForNotUsingGit
@AndroidDev Я предполагаю, что это сценарий.
Джейкоб Влейм
2
@JacobVlijm Похоже, что «DISPLAY =: 0 xrandr» и «DISPLAY =: 0 xrandr - выход HDMI1 - яркость 0» работают. Благодарность!
JPX
1
Но я установил свой сценарий на + x
Terrance
1
@JPX Я бы использовал полный путь, так как мы не знаем, где мы находимся :)
Джейкоб Влийм
3

Изменить: вопрос был изменен, так как я предоставил этот ответ. Я оставлю этот ответ в силе, потому что он предоставляет некоторую информацию, которая может быть полезной.

Если под консолью вы подразумеваете одну из виртуальных консолей символьной ячейки, то установите vlock:

sudo apt-get -y install vlock

Затем вы можете отключить и заблокировать виртуальную консоль:

vlock

При разблокировке консоли экран не восстанавливается. Если вы не хотите терять содержимое экрана, я предлагаю войти на вторую консоль; когда вы хотите заблокировать экран, перейдите на эту вторую консоль и введите

vlock -a

Это заблокирует все консоли и предотвратит переключение консоли. После разблокировки консолей вы можете переключиться обратно на основную рабочую консоль и найти содержимое экрана в целости и сохранности.

AlexP
источник
Лучший вариант восстановить предыдущий сеанс - использовать мультиплексор терминала, такой как tmux или screen, и отсоединить сеанс, заблокировать консоль, а затем снова подключиться к предыдущему сеансу. Бонус: вы можете полностью выйти из системы или отключиться от нее и продолжить сеанс позже.
Дэвид Фёрстер
2

Просто запустите:

gnome-screensaver-command -a

Примечание: это также вызовет экран блокировки, если вы не отключите опцию «Блокировка» в настройках системы:

введите описание изображения здесь

You'reAGitForNotUsingGit
источник
Это также вызовет экран блокировки.
Джейкоб Влейм
@JacobVlijm - это не для меня.
YouAGitForNotUsingGit
@ AndroidDev Это странно, Ubuntu 16.04 здесь.
Джейкоб Влейм
Это зависит от того, как вы настроили «Настройки системы → Яркость и блокировка». Настройка «Блокировка вкл. / Выкл.» И «Блокировка экрана после ...» управляет поведением.
Byte Commander
@JacobVlijm - Отредактировано
You'reAGitForNotUsingGit