Alternative zu xsel oder xclip * ohne * X11 installiert?


10

Gibt es eine Alternative zu xsel oder xclip, wenn ich Kitt von einer Windows-Box zu Linux verwende (ohne X11 installiert)? xclip / xsel benötigen X11. Ich möchte die gesamte Shell-Befehlsausgabe in die Zwischenablage leiten, die ich dann in die Windows-Box in eine Anwendung einfüge. Ich möchte nicht alle X11-Abhängigkeiten installieren müssen, die xsel und xclip auf diesen Linux-Servern benötigen. Ist das möglich? Dan

Antworten:


7

Die Zwischenablage selbst ist eine Funktion von X11, sodass Sie sie nicht verwenden können, ohne dass irgendwo eine X11-Serverinstanz ausgeführt wird. Mehr dazu weiter unten.

Allerdings xclip/ xselnicht den X11 - Server als Abhängigkeit haben, müssen sie nur einige Client - Bibliotheken installiert. Sie sollten jedoch installieren, xselwenn Sie so wenige Pakete wie möglich haben möchten, da diese erheblich weniger Abhängigkeiten aufweisen als xclip(vergleichen Sie die Ausgabe von apt depends --recurse --important xselund apt depends --recurse --important xclip).

Zurück zum X11-Server. Sie sagten, Sie möchten keinen vollständigen grafischen X11-Serverstapel auf Ihrem kopflosen Ubuntu-Server installieren, was nicht erforderlich ist. Dazu muss jedoch stattdessen ein X11-Server auf Ihrem lokalen Client ausgeführt werden, wenn Sie dessen Funktionen wie die Zwischenablage verwenden möchten.

Auf einem Linux-Desktop-Client ist dies kein Problem, da dort normalerweise bereits X11 ausgeführt wird, unter Windows jedoch nicht. Glücklicherweise scheint es auch für Windows eine kleine X11-Serverversion namens Xming zu geben .

Sobald Sie dies ausgeführt und konfiguriert haben, sollten Sie in der Lage sein, Ihre lokale X11-Sitzung über SSH (mit PuTTY) an Ihren Headless-Server weiterzuleiten. Dort können Sie dann zB xseldamit interagieren und auf Ihre lokale Zwischenablage zugreifen.

Weitere Informationen zum Einrichten von Xming, PuTTY und des SSH-Servers für die X11-Weiterleitung finden Sie in den folgenden Beiträgen:


3
screenund tmuxhaben Copy-Paste-Puffer: Hat Nicht-X-Linux eine Zwischenablage?
Nachtisch

@ Dessert Das wusste ich nicht. Soweit ich weiß, handelt es sich bei diesen "Puffern" jedoch nicht wirklich um ein systemweites oder gemeinsam nutzbares oder remote zugängliches Zwischenablage-Äquivalent, sondern nur um eine lokale Funktion der jeweiligen Anwendung. Daher bin ich mir nicht sicher, ob diese zur Datenübertragung beitragen würden von einer Pipe auf dem Server zur Client-Zwischenablage, wie in der Frage beschrieben. Ich würde nicht raten, es sei denn, Sie könnten das in einer separaten Antwort erklären?
Byte Commander

1
Ich möchte eigentlich nur die Windows / cmd-Funktion von clip.exe auf jedem Linux-Server nachahmen, auf den ich mit ssh zugreife. c: \> dir | clip würde die Ausgabe von dir in den Kopierpuffer legen und ich könnte sie überall zum Einfügen verwenden. Normalerweise benutze ich Ubuntu und Terminator, daher funktioniert xclip / xsel einwandfrei. Aber wenn ich im Ausland bin, greife ich über ssh von einer Windows-Box auf Server zu.
Ich grok es

1
Ja, der Unterschied besteht darin, dass clip.exe lokal unter Windows oder xsel / xclip lokal auf einem Ubuntu-Desktop Befehlszeilenclients sind, die mit ihrem jeweiligen lokalen GUI- / Eingabestapel interagieren und die gemeinsam genutzte Zwischenablagefunktionalität auf diesem System bereitstellen. Jeder für sich funktioniert gut, aber sie sind nicht direkt miteinander kompatibel. X11 unterstützt eine recht einfache Weiterleitung über ssh, die PuTTY verwenden kann. Wenn Sie also jeweils einen X11-Server und -Client an einem Ende der ssh-Verbindung haben, können Sie auf eine Remote-Zwischenablage zugreifen. Keine Magie beteiligt. Remote und plattformübergreifend ist jedoch nicht so einfach.
Byte Commander

1

Wenn Sie eine modifizierte PuTTY verwenden möchten, sollten Sie sich diesen Patch für PuTTY ansehen , der benutzerdefinierte Escape-Sequenzen zum Kopieren und Einfügen in die Windows-Zwischenablage hinzufügt. Außerdem wird ein kleines winclipShell-Skript ausgeliefert, mit dem vom Linux / Unix-Zielhost aus auf die Windows-Zwischenablage zugegriffen werden kann.

Der Patch ist für PuTTY 0.53b (über zehn Jahre alt), hier gibt es eine Rebase für PuTTY 0.60 , aber das ist immer noch eine alte Version. Möglicherweise benötigen Sie einige Arbeit, um es an das neueste PuTTY anzupassen (0,70 zum Zeitpunkt dieses Schreibens), aber es kann nur ohne Änderungen angewendet werden, da die PuTTY-Codebasis zu diesem Zeitpunkt größtenteils stabil war. Vielleicht könnte dies für Sie nützlich sein.

Es ist unwahrscheinlich, dass der Patch in das offizielle PuTTY aufgenommen wird, da die Escape-Sequenzen benutzerdefiniert sind und nicht wirklich Teil eines Standards sind. Daher ist es unwahrscheinlich, dass PuTTY es offiziell in seiner offiziellen Distribution unterstützt.


1

script protokolliert den gesamten Dialog

Das kompilierte Programm scriptist ein Programm im Paket bsdutilsim Repository 'main' in Ubuntu. Es speichert den gesamten Dialog in einem Textbildschirm, Terminalfenster oder einer Remoteverbindung. Sie können scriptauf Ihrem Server ausgeführt werden.

Der Standardname der Protokolldatei befindet sich typescriptin dem Verzeichnis, in dem Sie beginnen script. Sie können jedoch einen anderen Namen auswählen, wenn Sie scriptmit einem Parameter beginnen (Alias-Argument).

script my-script.log

Demo-Beispiel

Starten Sie scripteinige Befehle und führen Sie sie aus:

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

Überprüfen Sie die Protokolldatei:

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 $ 

0

PuTTY auf der Windows-Seite ermöglicht das Kopieren von Bildschirmtext über eine Reihe von Verknüpfungen . Wenn die Ausgabe des Befehls zu groß ist, sollten Sie ihn ncauf dem Ubuntu-Server und ncatauf dem Windows-Client ( verfügbar unter nmap.org ) verwenden.

Führen Sie unter Ubuntu aus

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

Verwenden Sie unter Windows ncat:

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

Die auf dem Server gespeicherte Ausgabe wird foo.txtauf den Client übertragen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.