xclip auf headless server

27

Ich habe xclip verwendet, um die Ausgabe von Bash-Befehlen wie folgt zu kopieren:

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

Damit kann ich dann die Ausgabe in eine andere Terminalsitzung einfügen.

Ich habe versucht, es auf meinem Headless-Server (Ubuntu 13.04) zu verwenden, der ohne x gestartet wird. Es funktioniert nicht mit dem Fehler:

Error: Can't open display: (null)

Gibt es einen Weg, dies zu umgehen? Mir ist klar, dass es möglicherweise nicht möglich ist, das Programm mit dem Namen xclip zu sehen.

Anake
quelle

Antworten:

29

Die Zwischenablage wird vom X-Server bereitgestellt . Es spielt keine Rolle, ob der Server kopflos ist oder nicht. Entscheidend ist, dass Ihre lokale Grafiksitzung für Programme verfügbar ist, die auf dem Remotecomputer ausgeführt werden. Dank des netzwerktransparenten Designs von X ist dies möglich.

Ich gehe davon aus, dass Sie mit SSH von einem Computer unter Linux aus eine Verbindung zum Remote-Server herstellen. Stellen Sie sicher, dass die X11-Weiterleitung sowohl in der Clientkonfiguration als auch in der Serverkonfiguration aktiviert ist. In der Client-Konfiguration muss die Leitung ForwardX11 yeseingegeben sein ~/.ssh/config, damit sie standardmäßig aktiviert ist, oder Sie müssen die Option nur für diese Sitzung -Xan den sshBefehl übergeben. In der Serverkonfiguration muss die Zeile X11Forwarding yeseingegeben sein /etc/ssh/sshd_config(sie ist bei Ubuntu standardmäßig vorhanden).

Um zu überprüfen , ob X11 - Weiterleitung aktiviert ist, sehen Sie den Wert der DISPLAYUmgebungsvariablen: echo $DISPLAY. Sie sollten einen Wert wie den folgenden sehen localhost:10(Anwendungen, die auf dem Remotecomputer ausgeführt werden, werden angewiesen, eine Verbindung zu einem Bildschirm herzustellen, der auf demselben Computer ausgeführt wird. Diese Bildschirmverbindung wird jedoch von SSH an Ihren clientseitigen Bildschirm weitergeleitet). Beachten Sie, dass das DISPLAYmanuelle Festlegen nicht erforderlich ist, wenn es nicht festgelegt ist: Die Umgebungsvariable wird immer korrekt festgelegt, wenn die Weiterleitung vorhanden ist. Wenn Sie SSH-Verbindungsprobleme diagnostizieren müssen, übergeben Sie die Option -vvvan ssh, um eine detaillierte Übersicht über die Vorgänge zu erhalten.

Wenn Sie auf andere Weise eine Verbindung herstellen, können Sie möglicherweise eine X11-Weiterleitung erreichen oder nicht. Wenn auf Ihrem Client Windows ausgeführt wird, unterstützt PuTTY die X11-Weiterleitung. Sie müssen einen X-Server auf dem Windows-Computer wie Xming ausführen .

Gilles 'SO - hör auf böse zu sein'
quelle
+1 geniale Antwort, aber wie ich bereits erwähnte, läuft dieser Server ohne x, daher ist Nykakins Antwort relevanter.
Anake
@Anake Ich fürchte, Sie haben meine Antwort falsch verstanden. Bei einer Remoteanzeige wird kein X-Server auf dem Remotecomputer ausgeführt. Sie müssen das xclipProgramm und die unterstützenden Bibliotheken installiert haben , müssen jedoch keinen X-Server installieren.
Gilles 'SO- hör auf böse zu sein'
2
Ich frage mich nur ... ist dieser Ansatz gültig, wenn eine Verbindung von einem OSX-Client zu einem Ubuntu-Server ohne Kopf hergestellt wird?
ken
3
Das funktioniert bei mir nicht. Ich gehe von Mac -> Linux Server. X11Forwarding yesist in der sshd_config auf dem Server und ich habe übergeben, -Xwenn ich an den Server ssh'd. Error: Can't open display: (null)oncat ~/.ssh/id_rsa.pub | xclip -selection clipboard
chovy
1
ok, ich dachte, es würde funktionieren, da es pbcopybereits lokal auf meinem Mac funktioniert. Wie starte ich einen x-Server auf einem Mac und auf was stelle ich ihn ein $DISPLAY?
Chovy
4

Bash selbst hat keine Zwischenablage. Es ist eine X-Funktion. xcliptist nur eine Kommandozeilen - Schnittstelle und wie Sie sehen, es erfordert display. Eine Möglichkeit besteht darin, nur eine temporäre Datei zu verwenden:

$ echo 123 > /tmp/f
$ tr -d '2' < /tmp/f
13
Nykakin
quelle
4
Ich verstehe es nicht.
Chovy
Ich denke, Sie haben zwei verschiedene Antworten unterschiedlicher Post kombiniert.
Markroxor