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

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

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

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

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

Error: Can't open display: (null)

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

27
задан 8 June 2013 в 17:43

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 .

0
ответ дан 8 June 2013 в 17:43

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

$ echo 123 > /tmp/f
$ tr -d '2' < /tmp/f
13
0
ответ дан 8 June 2013 в 17:43

Другие вопросы по тегам:

Похожие вопросы: