xclip en el servidor sin cabeza

27

He estado usando xclip para copiar la salida de los comandos bash de esta manera:

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

Para poder pegar la salida en otra sesión de terminal.

Estaba tratando de usarlo en mi servidor sin cabeza (ubuntu 13.04), que se inicia sin x. No funciona con el error:

Error: Can't open display: (null)

Hay alguna forma de evitar esto. Me doy cuenta de que, dado que el programa se llama xclip, es posible que no sea posible.

Anake
fuente

Respuestas:

29

El portapapeles es proporcionada por el servidor X . No importa si el servidor no tiene cabeza o no, lo que importa es que su sesión gráfica local esté disponible para los programas que se ejecutan en la máquina remota. Gracias al diseño transparente de red de X, esto es posible.

Supongo que se está conectando al servidor remoto con SSH desde una máquina que ejecuta Linux. Asegúrese de que el reenvío X11 esté habilitado tanto en la configuración del cliente como en la configuración del servidor. En la configuración del cliente, es necesario tener la línea ForwardX11 yesde ~/.ssh/configtenerlo activado de forma predeterminada, o pasar la opción -Xa la sshorden de la misma para esa sesión. En la configuración del servidor, es necesario tener la línea X11Forwarding yesen /etc/ssh/sshd_config(que está presente de forma predeterminada en Ubuntu).

Para comprobar si el reenvío por X11 está activado, mira el valor de la DISPLAYvariable de entorno: echo $DISPLAY. Debería ver un valor como localhost:10(a las aplicaciones que se ejecutan en la máquina remota se les dice que se conecten a una pantalla que se ejecuta en la misma máquina, pero esa conexión de pantalla de hecho es enviada por SSH a su pantalla del lado del cliente). Tenga en cuenta que si DISPLAYno se configura, no sirve de nada configurarlo manualmente: la variable de entorno siempre se configura correctamente si el reenvío está en su lugar. Si necesita diagnosticar problemas de conexión SSH, pase la opción -vvva sshpara obtener un seguimiento detallado de lo que está sucediendo.

Si se está conectando a través de otros medios, es posible que pueda o no lograr el reenvío X11. Si su cliente ejecuta Windows, PuTTY admite el reenvío X11; Tendrá que ejecutar un servidor X en la máquina Windows, como Xming .

Gilles 'SO- deja de ser malvado'
fuente
+1 respuesta brillante, pero como mencioné, este servidor se ejecuta sin x, por lo que la respuesta de Nykakins es más relevante.
Anake
@Anake, me temo que leíste mal mi respuesta. Una pantalla remota no involucra ningún servidor X que se ejecute en la máquina remota. Es necesario que tenga xclipinstalado el programa y las bibliotecas compatibles, pero eso no implica la instalación de un servidor X.
Gilles 'SO- deja de ser malvado'
2
Me pregunto ... ¿es válido este enfoque cuando se conecta desde un cliente OSX a un servidor Ubuntu sin cabeza?
Ken
3
Esto no funciona para mi. Voy desde mac -> servidor linux. X11Forwarding yesestá en sshd_config en el servidor y pasé -Xcuando ssh'd al servidor. Error: Can't open display: (null)encat ~/.ssh/id_rsa.pub | xclip -selection clipboard
chovy
1
ok, pensé que funcionaría ya que pbcopyya funciona en mi mac localmente. ¿Cómo inicio un servidor x en una Mac y qué debo configurar $DISPLAY?
chovy
4

Bash en sí no tiene un portapapeles. Es una característica X. xcliptes solo una interfaz de línea de comandos y, como puede ver, requiere display. Una forma de evitarlo es usar un archivo temporal:

$ echo 123 > /tmp/f
$ tr -d '2' < /tmp/f
13
Nykakin
fuente
44
no lo entiendo
chovy
Creo que combinaste dos respuestas diferentes de una publicación diferente.
markroxor