web-dev-qa-db-fra.com

Alternative à xsel ou xclip * sans * X11 installé?

Lorsque j'utilise PuTTY d'une boîte Windows vers Linux (sans X11 installé), existe-t-il une alternative à xsel ou xclip? xclip/xsel ont besoin de X11. Je voudrais diriger la sortie complète de la commande Shell vers le presse-papiers que je colle ensuite sur la boîte Windows vers une application. Je voudrais ne pas avoir à installer toutes les dépendances X11 dont xsel et xclip ont besoin sur ces serveurs Linux. Est-ce possible? Dan

10
I grok it

Le presse-papiers lui-même est une fonctionnalité de X11, vous ne pourrez donc pas l'utiliser sans qu'aucune instance de serveur X11 ne s'exécute nulle part. Plus d'informations à ce sujet ci-dessous.

Cependant, xclip/xsel n'ont pas le serveur X11 comme dépendance, ils n'ont besoin que de quelques bibliothèques clientes installées. Vous devez installer xsel si vous voulez avoir le moins de packages possible, car il a beaucoup moins de dépendances que xclip (comparez la sortie de apt depends --recurse --important xsel et apt depends --recurse --important xclip).

Revenons au serveur X11. Vous avez dit que vous ne vouliez pas installer une pile de serveur graphique X11 complète sur votre serveur Ubuntu sans tête, ce qui n'est pas nécessaire. Cela nécessite cependant que vous ayez un serveur X11 en cours d'exécution sur votre client local, si vous souhaitez utiliser ses fonctionnalités comme le presse-papiers.

Sur un client de bureau Linux, ce n'est pas un problème, car vous avez déjà généralement X11 qui y fonctionne, mais pas sur Windows. Heureusement, il semble qu'il existe également une petite version de serveur X11 pour Windows, appelée Xming .

Une fois que vous l'avez exécuté et configuré, vous devriez pouvoir transférer votre session X11 locale via SSH (en utilisant PuTTY) vers votre serveur sans tête. Là, vous pouvez ensuite utiliser par exemple xsel pour interagir avec lui et accéder à votre presse-papiers local.

Plus de détails sur la façon de configurer Xming, PuTTY et le serveur SSH pour le transfert X11 peuvent être trouvés dans ces messages:

7
Byte Commander

Si l'utilisation d'un PuTTY modifié est une option pour vous, vous voudrez peut-être regarder ce correctif pour PuTTY , qui ajoute des séquences d'échappement personnalisées à copier et à coller à partir du presse-papiers de Windows. Il contient également un petit script Shell winclip qui peut être utilisé pour accéder au presse-papiers Windows à partir de l'hôte Linux/Unix cible.

Le patch est pour PuTTY 0.53b (plus de dix ans), il y a un rebase vers PuTTY 0.60 ici mais c'est toujours une ancienne version. Vous devrez peut-être un peu de travail pour l'adapter à la dernière version de PuTTY (0,70 au moment de la rédaction de cet article), mais il pourrait simplement s'appliquer sans aucun changement puisque la base de code de PuTTY est restée stable à ce stade. Peut-être que cela pourrait vous être utile.

Il est peu probable que le patch soit accepté sur PuTTY officiel, car les séquences d'échappement sont personnalisées et ne font pas vraiment partie des normes, il est donc peu probable qu'elles soient officiellement prises en charge par PuTTY dans sa distribution officielle.

1
filbranden

script enregistre l'ensemble du dialogue

Le programme compilé script est un programme dans le package bsdutils dans le référentiel 'main' dans Ubuntu. Il enregistre l'ensemble du dialogue dans un écran de texte, une fenêtre de terminal ou une connexion à distance. Vous pouvez exécuter script sur votre serveur.

Le nom par défaut du fichier journal est TypeScript dans le répertoire où vous démarrez script, mais vous pouvez sélectionner un autre nom si vous démarrez script avec un paramètre (argument alias)

script my-script.log

Exemple de démonstration

Démarrez script et exécutez quelques commandes:

sudodus@bionic64 ~/test $ LANG=C script my-script.log
Script started, file is my-script.log
sudodus@bionic64 ~/test $ echo 'Hello World'
Hello World
sudodus@bionic64 ~/test $ pwd
/home/sudodus/test
sudodus@bionic64 ~/test $ ls
my-script.log
sudodus@bionic64 ~/test $ exit
exit
Script done, file is my-script.log

Vérifiez le fichier journal:

sudodus@bionic64 ~/test $ cat my-script.log 
Script started on 2019-01-21 19:50:22+0100
sudodus@bionic64 ~/test $ echo 'Hello World'
Hello World
sudodus@bionic64 ~/test $ pwd
/home/sudodus/test
sudodus@bionic64 ~/test $ ls
my-script.log
sudodus@bionic64 ~/test $ exit
exit

Script done on 2019-01-21 19:50:52+0100
sudodus@bionic64 ~/test $ 
1
sudodus

PuTTY côté Windows permet de copier du texte à l'écran via un ensemble de raccourcis . Si la sortie de la commande est trop volumineuse, envisagez d'utiliser nc sur le serveur Ubuntu et ncat sur le client Windows ( disponible sur nmap.org ).

Sur Ubuntu, exécutez

$ command > output.txt
# port 1234 is just an example, you can use your own port of choice
$ nc -N -l 1234 < output.txt

Sous Windows, utilisez ncat:

PS C:\Users\Admin> & 'C:\Program Files (x86)\Nmap\ncat.exe' <ip of the server> 1234 --output foo.txt

La sortie enregistrée sur le serveur sera transférée dans foo.txt sur le client.

0
Sergiy Kolodyazhnyy