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


27

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

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

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

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

Error: Can't open display: (null)

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

Ответы:


29

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


+1 блестящий ответ, но, как я уже говорил, этот сервер работает без x, поэтому ответ Nykakins более актуален.
Анака

@ А, боюсь, ты неправильно понял мой ответ. Удаленный дисплей не использует X-сервер, работающий на удаленном компьютере. Вам необходимо установить xclipпрограмму и поддерживающие библиотеки, но это не требует установки X-сервера.
Жиль "ТАК - перестань быть злым"

2
Просто интересно ... допустим ли этот подход при подключении клиента OSX к автономному серверу Ubuntu?
Кен

3
Это не работает для меня. Я иду с Mac -> Linux-сервер. X11Forwarding yesнаходится в sshd_config на сервере, и я прошел, -Xкогда я ssh'd на сервер. Error: Can't open display: (null)наcat ~/.ssh/id_rsa.pub | xclip -selection clipboard
Чови

1
Хорошо, я подумал, что это будет работать, так как pbcopyуже работает на моем Mac локально. Как запустить x-сервер на Mac и что мне установить $DISPLAY?
Чови

4

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

$ echo 123 > /tmp/f
$ tr -d '2' < /tmp/f
13

4
я не понимаю
Чови

Я думаю, что вы объединили два разных ответа разных постов.
Маркроксор
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.