xclip на безголовом сервере

20

Я использую xclip для копирования вывода команд bash следующим образом:

pwd | tr -d "\n" | xclip -selection c

Итак, я могу вставить вывод в другой сеанс терминала.

Я пытался использовать его на моем безголовом сервере (ubuntu 13.04), который запускается без x. Он не работает с ошибкой:

Error: Can't open display: (null)

Есть ли способ обойти это. Я понимаю, что, видя, что программа называется xclip, это может быть невозможно.

    
задан Anake 08.06.2013 в 15:43
источник

2 ответа

20

Буфер обмена предоставляется сервером X. . Неважно, является ли сервер безгласным или нет, важно то, что ваш локальный графический сеанс доступен для программ, запущенных на удаленном компьютере. Благодаря сетевой прозрачной конструкции X это возможно.

Я предполагаю, что вы подключаетесь к удаленному серверу с SSH с машины под управлением Linux. Убедитесь, что переадресация X11 включена как в конфигурации клиента, так и в конфигурации сервера. В конфигурации клиента вам нужно иметь строку ForwardX11 yes в ~/.ssh/config , чтобы включить ее по умолчанию, или передать параметр -X команде ssh только для этого сеанса. В конфигурации сервера вам нужно иметь строку X11Forwarding yes в /etc/ssh/sshd_config (она присутствует по умолчанию в Ubuntu).

Чтобы проверить, включена ли пересылка X11, просмотрите значение переменной среды DISPLAY : echo $DISPLAY . Вы должны увидеть такое значение, как localhost:10 (приложениям, запущенным на удаленной машине, сообщается о подключении к дисплею, запущенному на том же компьютере, но это соединение отображения фактически пересылается SSH на ваш клиентский дисплей). Обратите внимание, что если DISPLAY не задано, использовать его вручную не нужно: переменная среды всегда устанавливается правильно, если пересылка на месте. Если вам нужно диагностировать проблемы с подключением SSH, передайте опцию -vvv на ssh , чтобы получить подробную информацию о том, что происходит.

Если вы подключаетесь к другим средствам, вы можете или не сможете достичь пересылки X11. Если ваш клиент работает под управлением Windows, PuTTY поддерживает пересылку X11 ; вам нужно будет запустить X-сервер на машине Windows, например Xming .

    
ответ дан Gilles 08.06.2013 в 17:10
источник
4

У самого Bash нет буфера обмена. Это функция Х. xclipt - это просто интерфейс командной строки, и, как видите, для этого требуется display . Способ состоит в том, чтобы просто использовать временный файл:

$ echo 123 > /tmp/f
$ tr -d '2' < /tmp/f
13
    
ответ дан Nykakin 08.06.2013 в 16:10