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