xclip no servidor headless

20

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 de terminal.

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

Error: Can't open display: (null)

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

    
por Anake 08.06.2013 / 15:43

2 respostas

21

A área de transferência é fornecida pelo servidor X . Não importa se o servidor está sem cabeça 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 da rede do X, isso é possível.

Suponho que você esteja se conectando ao servidor remoto com SSH de uma máquina que executa o Linux. Certifique-se de que o encaminhamento do X11 esteja ativado na configuração do cliente e na configuração do servidor. Na configuração do cliente, você precisa ter a linha ForwardX11 yes in ~/.ssh/config para ativá-la por padrão ou passar a opção -X para o comando ssh apenas para essa sessão. Na configuração do servidor, você precisa ter a linha X11Forwarding yes em /etc/ssh/sshd_config (ela está presente por padrão no Ubuntu).

Para verificar se o encaminhamento X11 está ativado, observe o valor da variável de ambiente DISPLAY : 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 uma exibição em execução na mesma máquina, mas essa conexão de exibição é de fato encaminhada pelo SSH para a exibição do lado do cliente). Observe que, se DISPLAY não estiver definido, não adianta defini-lo manualmente: a variável de ambiente será sempre definida corretamente se o encaminhamento estiver no lugar. Se você precisar diagnosticar problemas de conexão SSH, passe a opção -vvv para ssh para obter um rastreamento detalhado do que está acontecendo.

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

    
por Gilles 08.06.2013 / 17:10
5

O próprio Bash não tem uma área de transferência. É um recurso do X. xclipt é apenas uma interface de linha de comando e, como você vê, requer display . Uma forma de contornar é apenas usar um arquivo temporário:

$ echo 123 > /tmp/f
$ tr -d '2' < /tmp/f
13
    
por Nykakin 08.06.2013 / 16:10