Вход копии к буферу обмена по SSH?

Вот мой случай использования:

  • Я часто подключаюсь к другим компьютерам по SSH для работы, и я часто должен копировать и вставлять документы/текст от сервера до локально рабочих редакторов для записи примеров и совместного использования текста.
  • Часто, если текст будет достаточно мелок, то я просто скопирую вывод со своей терминальной программы (терминал гнома в данный момент) и вставлю его.
  • Однако когда дело доходит до всех документов, мои опции вполне ограничены. Я могу или скопировать блок блоком документа, или scp это к локальной машине.

Есть ли способ использовать программу такой как xclip который позволит мне копировать удаленный stdin к буферу обмена локального X-сервера? Что-то к эффекту:

cat myconffile.conf | sed {...} | copy-over-ssh-to-local-clipboard

было бы потрясающим. Что-то существует для создания этого возможным?

34
15.07.2011, 02:41
5 ответов

При выполнении ssh с X передачами это прозрачно: удаленные команды (включая xclip) имейте доступ к своему X-серверу (включая его клавиатуру). Удостоверьтесь, что Вы имеете ForwardX11 yes в Вашем ~/.ssh/config и X11Forwarding yes в сервере sshd_config (в зависимости от Ваших дистрибутивов эти опции могут идти или прочь по умолчанию).

<myconffile.conf sed {...} | xclip -i

Существуют другие способы работать над удаленными файлами, которые могут быть более удобными, например, монтируя удаленные каталоги на Вашей локальной машине с SSHfs, или открыв удаленные файлы в Emacs с Бродягой. Если у Вас есть ssh и настроенный FUSE и установленный SSHfs, SSHfs так же легок как mkdir ~/net/myserver; sshfs myserver:/ ~/net/myserver. Если у Вас есть настроенный ssh и установленный Emacs, Бродяга так же легок как открытие /myserver:/path/to/file.

20
27.01.2020, 19:37

Вам не нужно ничто специальное; с тех пор xclip работы stdin, просто

ssh remotehost xclip < myconf.conf

Почему это должно было бы быть изменено с sed? ssh очевидно для данных, когда он не используется в качестве терминала и наиболее часто используемый в конвейерах такой как

tar cfz - somedir | ssh remotehost 'cd destdir; tar xfz -'`
7
27.01.2020, 19:37
  • 1
    Существует ли способ сделать это из существующей сессии SSH? Я действительно предпочел бы не должным быть открывать другое окно терминала, если у меня уже есть одно открытое для рассматриваемой машины. –  Naftuli Kay 15.07.2011, 02:56
  • 2
    И sed' просто там как пример, если я хотел бы выполнить какую-либо обработку на stdin прежде, чем скопировать его в буфер обмена, я хотел бы ту опцию. –  Naftuli Kay 15.07.2011, 02:57
  • 3
    Нет, нет никакого способа ввести данные в существующее ssh сессия (это не было бы очень безопасно, если Вы могли). Можно настроить ssh ControlMaster наполните для мультиплексирования дополнительных соединений по существующему, но это не действительно что-то для новичков, и Вы все еще делаете это тот же путь позже путем переключения на другой локальный терминал и выполнения команды выше (который не открывает новое окно терминала). –  geekosaur 15.07.2011, 03:03

У меня есть подобная проблема с LUbuntu's lxterminal (протестированные различные терминалы) вставка буфера обмена к ssh сессия. Если буфер обмена имеет больше, чем приблизительно 100 байтов тайм-ауты сессии и сбои.

Если я соединяюсь через ssh почти с каким-либо сервером CentOS 5.x и затем соединяюсь с целевым сервером, работами вставки буфера обмена без какой-либо проблемы для какого-либо разумного размера данных.

0
27.01.2020, 19:37

https://secure.wikimedia.org/wikipedia/en/wiki/Base64

Можно преобразовать данные буфера обмена с Base64 к тексту ASCII. Затем можно протолкнуть ту внутреннюю часть уже существующее соединение SSH.

-1
27.01.2020, 19:37
  • 1
    Почему преобразовывают во что-нибудь? Это уже - текст в этом случае и даже если бы это было двоичным то не было бы никакой причины, которую Вы не могли бы отправить ему через конвейер как это. –  Caleb 02.08.2011, 13:41
  • 2
    мог содержать двоичные данные, например: скомпилированное приложение –  LanceBaynes 02.08.2011, 17:34
  • 3
    Да, это могло, но почему это будет проблемой? Двоичные данные могут быть переданы через туннель ssh и канал. –  Caleb 02.08.2011, 17:39

Вот то, как Вы сделали бы это на OSX от Вашей локальной машины

ssh remotehost.com "<some/file.txt" | pbcopy
5
27.01.2020, 19:37

Теги

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