xclip no servidor sem cabeça

27

Eu tenho usado o xclip para copiar a saída dos comandos bash da seguinte forma:

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

Para que eu possa colar a saída em outra sessão do terminal.

Eu estava tentando usá-lo no meu servidor sem cabeça (ubuntu 13.04), que é iniciado sem o x. Não funciona com o erro:

Error: Can't open display: (null)

Existe uma maneira de contornar isso. Sei que, como o programa é chamado xclip, pode não ser possível.

Anake
fonte

Respostas:

29

A área de transferência é fornecido pelo servidor X . Não importa se o servidor está decapitado ou não, o que importa é que sua sessão gráfica local esteja disponível para programas em execução na máquina remota. Graças ao design transparente de rede do X, isso é possível.

Presumo que você esteja se conectando ao servidor remoto com SSH de uma máquina executando o Linux. Verifique se o encaminhamento do X11 está ativado na configuração do cliente e na configuração do servidor. Na configuração do cliente, você precisa ter a linha ForwardX11 yesem ~/.ssh/configtê-lo ligado por padrão, ou passar a opção -Xpara o sshcomando apenas para essa sessão. Na configuração do servidor, você precisa ter a linha X11Forwarding yesem /etc/ssh/sshd_config(ele está presente por padrão no Ubuntu).

Para verificar se o encaminhamento X11 é ativado, olhar para o valor da DISPLAYvariável de ambiente: echo $DISPLAY. Você deve ver um valor como localhost:10(os aplicativos em execução na máquina remota são instruídos a se conectar a um monitor em execução na mesma máquina, mas essa conexão é de fato encaminhada pelo SSH para o monitor do lado do cliente). Observe que, se DISPLAYnão estiver definido, não adianta defini-lo manualmente: a variável de ambiente sempre será definida corretamente se o encaminhamento estiver em vigor. Se você precisa para diagnosticar problemas de conexão SSH, passe a opção -vvvpara sshobter um traço detalhada do que está acontecendo.

Se você estiver se conectando por outros meios, poderá ou não conseguir obter o encaminhamento do X11. Se o seu cliente estiver executando o Windows, o PuTTY suporta o encaminhamento X11; você precisará executar um servidor X na máquina Windows, como o Xming .

Gilles 'SO- parar de ser mau'
fonte
+1 resposta brilhante, mas como eu mencionei, este servidor está sendo executado sem x, então a resposta Nykakins é mais relevante.
Anake
@ Cobra, eu tenho medo que você tenha interpretado mal a minha resposta. Um monitor remoto não envolve nenhum servidor X em execução na máquina remota. Você precisa ter o xclipprograma instalado e as bibliotecas de suporte, mas isso não envolve a instalação de um servidor X.
Gilles 'SO- stop be evil'
2
Apenas imaginando ... essa abordagem é válida ao conectar-se de um cliente OSX a um servidor Ubuntu sem cabeça?
Ken
3
Isso não funciona para mim. Eu estou indo do mac -> servidor linux. X11Forwarding yesestá no sshd_config no servidor e eu passei -Xquando fiz o ssh para o servidor. Error: Can't open display: (null)oncat ~/.ssh/id_rsa.pub | xclip -selection clipboard
chovy
1
ok eu imaginei que iria funcionar, uma vez que pbcopyjá funciona no meu mac localmente. Como inicio um servidor x em um mac e o que devo definir $DISPLAY?
chovy
4

O Bash em si não possui uma área de transferência. É um recurso X. xclipté apenas uma interface de linha de comando e, como você vê, requer display. Uma maneira de contornar é usar apenas um arquivo temporário:

$ echo 123 > /tmp/f
$ tr -d '2' < /tmp/f
13
Nykakin
fonte
4
Eu não entendo.
Chovy
Eu acho que você combinou duas respostas diferentes de post diferente.
markroxor 04/09