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 є більш актуальною.
Анаке

@Anake Боюся, ти неправильно прочитав мою відповідь. Віддалений дисплей не передбачає жодного X-сервера, що працює на віддаленій машині. Вам потрібно встановити xclipпрограму та підтримуючі бібліотеки, але це не передбачає встановлення X-сервера.
Жил "ТАК - перестань бути злим"

2
Цікаво, що ... чи підходить цей підхід під час підключення з клієнта OSX до безголового сервера Ubuntu?
кен

3
Це не працює для мене. Я переходжу з Mac -> Linux сервера. X11Forwarding yesзнаходиться в sshd_config на сервері, і я перейшов, -Xколи я ssh'd на сервер. Error: Can't open display: (null)oncat ~/.ssh/id_rsa.pub | xclip -selection clipboard
chovy

1
ОК, я подумав, що це буде працювати, оскільки pbcopyвже працює на моєму Mac. Як запустити x-сервер на mac і що мені встановити $DISPLAY?
чові

4

Сам Bash не має буфера обміну. Це особливість X. xcliptце лише інтерфейс командного рядка і, як бачите, він вимагає display. Обхідний спосіб - просто використовувати тимчасовий файл:

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

4
я не розумію.
chovy

Я думаю, ви поєднали дві різні відповіді різних постів.
markroxor
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.