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

Я использовал xclip для копирования вывода команд bash, например, так:

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

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

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

Error: Can't open display: (null)

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

2 ответа

Решение

Буфер обмена предоставляется 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.

Сам Bash не имеет буфера обмена. Это особенность X xclipt это просто интерфейс командной строки и, как вы видите, он требует display, Обходной путь - просто использовать временный файл:

$ echo 123 > /tmp/f
$ tr -d '2' < /tmp/f
13
Другие вопросы по тегам