web-dev-qa-db-fra.com

xclip sur le serveur sans tête

J'utilise xclip pour copier le résultat des commandes bash comme ceci:

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

Pour que je puisse ensuite coller la sortie dans une autre session de terminal.

J'essayais de l'utiliser sur mon serveur sans tête (Ubuntu 13.04), qui est démarré sans x. Cela ne fonctionne pas avec l'erreur:

Error: Can't open display: (null)

Y a-t-il un moyen de contourner ceci. Je me rends compte que vu que le programme s'appelle xclip, cela n’est peut-être pas possible.

24
Anake

Le presse-papiers est fourni par le serveur X . Que le serveur soit sans tête ou non, l’important est que votre session graphique locale soit disponible pour les programmes exécutés sur la machine distante. Grâce à la conception transparente du réseau de X, cela est possible.

Je suppose que vous vous connectez au serveur distant avec SSH à partir d'une machine exécutant Linux. Assurez-vous que le transfert X11 est activé à la fois dans la configuration du client et dans celle du serveur. Dans la configuration du client, vous devez avoir la ligne ForwardX11 yes dans ~/.ssh/config pour l'activer par défaut, ou passez l'option -X à la commande ssh uniquement pour cette session. Dans la configuration du serveur, vous devez avoir la ligne X11Forwarding yes dans /etc/ssh/sshd_config (elle est présente par défaut sous Ubuntu).

Pour vérifier si le transfert X11 est activé, examinez la valeur de la variable d'environnement DISPLAY: echo $DISPLAY. Vous devriez voir une valeur telle que localhost:10 (les applications exécutées sur la machine distante doivent se connecter à un écran fonctionnant sur le même ordinateur, mais cette connexion est en fait transmise par SSH à votre affichage côté client). Notez que si DISPLAY n'est pas défini, il ne sert à rien de le définir manuellement: la variable d'environnement est toujours définie correctement si le transfert est en place. Si vous devez diagnostiquer des problèmes de connexion SSH, passez l'option -vvv à ssh pour obtenir une trace détaillée de ce qui se passe.

Si vous vous connectez par un autre moyen, vous pouvez ou non réaliser la transmission X11. Si votre client exécute Windows, PuTTY prend en charge le transfert X11; vous devrez exécuter un serveur X sur la machine Windows tel que Xming .

26
Gilles

Bash lui-même n'a pas de presse-papiers. C'est une fonctionnalité X. xclipt est simplement une interface de ligne de commande et, comme vous le voyez, elle nécessite display. Une solution consiste simplement à utiliser un fichier temporaire:

$ echo 123 > /tmp/f
$ tr -d '2' < /tmp/f
13
4
Nykakin