Альтернатива xsel или xclip * без установленной * X11?

Когда я использую замазку из коробки Windows для Linux (без установленного X11), есть ли альтернатива xsel или xclip? xclip/xsel нужен X11. Я хотел бы направить полный вывод команды оболочки в буфер обмена, который я затем вставляю в окно Windows, в приложение. Я бы не хотел устанавливать на этих серверах Linux все зависимости X11, которые необходимы xsel и xclip. Это возможно? Дэн

4 ответа

Решение

Буфер обмена сам по себе является функцией X11, поэтому вы не сможете использовать его, если нигде не будет запущен ни один экземпляр сервера X11. Подробнее об этом ниже.

Тем не мение, xclip/xsel у вас нет сервера X11 в качестве зависимости, им нужно только установить некоторые клиентские библиотеки. Вы должны установить xsel хотя, если вы хотите иметь как можно меньше пакетов, поскольку у них значительно меньше зависимостей, чем xclip (сравните вывод apt depends --recurse --important xsel а также apt depends --recurse --important xclip).

Вернуться на сервер X11. Вы сказали, что не хотите устанавливать полный графический стек X11 на свой безголовый сервер Ubuntu, в этом нет необходимости. Однако для этого требуется, чтобы на локальном клиенте работал сервер X11, если вы хотите использовать его функции, такие как буфер обмена.

На настольном клиенте Linux это не проблема, так как обычно у вас уже работает X11, а в Windows - нет. К счастью, для Windows также существует небольшая серверная версия X11, которая называется Xming.

После того, как вы это запустите и настроите, вы сможете пересылать свой локальный сеанс X11 через SSH (используя PuTTY) на ваш безголовый сервер. Там вы можете использовать, например, xsel взаимодействовать с ним и получить доступ к вашему локальному буферу обмена.

Более подробную информацию о том, как настроить Xming, PuTTY и SSH-сервер для пересылки X11, можно найти в этих сообщениях:

script записывает весь диалог

Скомпилированная программа script это программа в пакете bsdutils в репозитории 'main' в Ubuntu. Сохраняет весь диалог на текстовом экране, в окне терминала или в удаленном соединении. Вы можете запустить script на вашем сервере.

Имя по умолчанию для файла журнала typescript в каталоге, где вы начинаете script, но вы можете выбрать другое имя, если вы начинаете script с параметром (аргумент псевдонима)

script my-script.log

Демо пример

Начните script и выполните несколько команд:

sudodus@bionic64 ~/test $ LANG=C script my-script.log
Script started, file is my-script.log
sudodus@bionic64 ~/test $ echo 'Hello World'
Hello World
sudodus@bionic64 ~/test $ pwd
/home/sudodus/test
sudodus@bionic64 ~/test $ ls
my-script.log
sudodus@bionic64 ~/test $ exit
exit
Script done, file is my-script.log

Проверьте файл журнала:

sudodus@bionic64 ~/test $ cat my-script.log 
Script started on 2019-01-21 19:50:22+0100
sudodus@bionic64 ~/test $ echo 'Hello World'
Hello World
sudodus@bionic64 ~/test $ pwd
/home/sudodus/test
sudodus@bionic64 ~/test $ ls
my-script.log
sudodus@bionic64 ~/test $ exit
exit

Script done on 2019-01-21 19:50:52+0100
sudodus@bionic64 ~/test $ 

Если для вас есть вариант с измененным PuTTY, вы можете захотеть взглянуть на этот патч в PuTTY, который добавляет пользовательские escape-последовательности для копирования и вставки из буфера обмена Windows. Это также отправляет небольшой winclip сценарий оболочки, который можно использовать для доступа к буферу обмена Windows с целевого хоста Linux/Unix.

Патч для PuTTY 0.53b (старше десяти лет), здесь есть ребаз до PuTTY 0.60, но это все еще старая версия. Возможно, вам понадобится немного поработать, чтобы адаптировать его к последней версии PuTTY (0,70 на момент написания этой статьи), но она может просто применяться без каких-либо изменений, поскольку кодовая база PuTTY была в основном стабильной на данный момент. Так что, возможно, это может быть полезно для вас.

Патч вряд ли будет принят официальной PuTTY, поскольку escape-последовательности являются пользовательскими и не являются частью каких-либо стандартов, поэтому вряд ли будут официально поддерживаться PuTTY в своем официальном выпуске.

PuTTY на стороне Windows позволяет копировать текст на экране с помощью набора ярлыков. Если вывод команды слишком велик, подумайте об использовании nc на сервере Ubuntu и ncat в клиенте Windows ( доступно с nmap.org).

В Ubuntu выполните

$ command > output.txt
# port 1234 is just an example, you can use your own port of choice
$ nc -N -l 1234 < output.txt

В Windows используйте ncat:

PS C:\Users\Admin> & 'C:\Program Files (x86)\Nmap\ncat.exe' <ip of the server> 1234 --output foo.txt

Вывод, сохраненный на сервере, будет перенесен в foo.txt на клиенте.

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