So senden Sie Daten von einer Remote-SSH-Sitzung an die lokale Zwischenablage

161

Borderline ServerFault-Frage, aber ich programmiere einige Shell-Skripte, also versuche ich es zuerst hier :)

Die meisten * nixes verfügen über einen Befehl, mit dem Sie die Ausgabe in die lokale Zwischenablage / Pasteboard leiten und von dort abrufen können. Unter OS X sind diese Befehle

pbcopy, pbpaste 

Gibt es überhaupt eine Möglichkeit, diese Funktionalität zu replizieren, während SSH auf einen anderen Server übertragen wird? Das ist,

  1. Ich benutze Computer A.
  2. Ich öffne ein Terminalfenster
  3. Ich SSH zu Computer B.
  4. Ich führe einen Befehl auf Computer B aus
  5. Die Ausgabe von Computer B wird umgeleitet oder automatisch in die Zwischenablage von Computer A kopiert.

Und ja, ich weiß, ich könnte einfach (schaudern) meine Maus verwenden, um den Text aus dem Befehl auszuwählen, aber ich habe mich so an den Workflow gewöhnt, die Ausgabe direkt in die Zwischenablage zu kopieren, dass ich dasselbe für meine Remote-Sitzungen möchte.

Code ist nützlich, aber auch allgemeine Ansätze werden geschätzt.

Alan Storm
quelle

Antworten:

89

Ich belebe diesen Thread wieder, weil ich nach der gleichen Lösung gesucht habe und eine gefunden habe, die für mich funktioniert. Es ist eine geringfügige Änderung eines Vorschlags von OSX Daily .

In meinem Fall verwende ich Terminal auf meinem lokalen OSX-Computer, um über SSH eine Verbindung zu einem Linux-Server herzustellen. Wie beim OP wollte ich in der Lage sein, kleine Textteile nur über die Tastatur vom Terminal in meine lokale Zwischenablage zu übertragen.

Das Wesentliche der Lösung:

commandThatMakesOutput | ssh desktop pbcopy

Wenn dieser Befehl in einer SSH-Sitzung auf einem Remotecomputer ausgeführt wird, übernimmt er die Ausgabe von commandThatMakesOutput (z. B. ls, pwd) und leitet die Ausgabe an die Zwischenablage des lokalen Computers weiter (Name oder IP von "desktop"). Mit anderen Worten, es wird verschachteltes SSH verwendet: Sie sind über eine SSH-Sitzung mit dem Remotecomputer verbunden, führen dort den Befehl aus und der Remotecomputer stellt über eine andere SSH-Sitzung eine Verbindung zu Ihrem Desktop her und legt den Text in Ihrer Zwischenablage ab.

Es erfordert, dass Ihr Desktop als SSH-Server konfiguriert ist (was ich Ihnen und Google überlasse). Es ist viel einfacher, wenn Sie SSH-Schlüssel eingerichtet haben, um eine schnelle SSH-Nutzung zu ermöglichen, vorzugsweise mit einer Passphrase pro Sitzung oder was auch immer Ihre Sicherheitsanforderungen erfordern.

Andere Beispiele:

ls  | ssh desktopIpAddress pbcopy
pwd |  ssh desktopIpAddress pbcopy

Der Einfachheit halber habe ich eine Bash-Datei erstellt, um den nach der Pipe erforderlichen Text zu verkürzen:

#!/bin/bash
ssh desktop pbcopy

In meinem Fall verwende ich einen speziell benannten Schlüssel

Ich habe es unter dem Dateinamen cb (meine Mnemonik (ClipBoard)) gespeichert. Platziere das Skript irgendwo in deinem Pfad, mache es ausführbar und voila:

ls | cb
rhileighalmgren
quelle
3
Ich oft dazu in vim. Wählen Sie dazu aus, was Sie im visuellen Modus kopieren möchten, und geben Sie Folgendes ein::'<,'>w !ssh desktop pbcopy
Mike Brennan
@MikeBrennan Wenn Sie den Text ausgewählt haben, warum drücken Sie nicht einfach cmd + C (oder die von Ihnen festgelegte Kopiertaste)? ...
Petr Peller
36
So funktioniert es nur dann wirklich, wenn Ihr Desktop eine statische IP hat und von der Box aus erreichbar ist, in die Sie ssh'd. Das ist bei mir nie der Fall.
kqw
6
Wäre der umgekehrte Weg nicht einfacher? ssh user @ remote 'commandThatMakesOutput' | pbcopy
Regel
Ich brauchte das -e nonehier beschriebene SSH-
Pat Myron
122

Mein Lieblingsweg ist ssh [remote-machine] "cat log.txt" | xclip -selection c. Dies ist am nützlichsten, wenn Sie nicht von remote nach lokal ssh möchten (oder können).

Edit: auf Cygwin ssh [remote-machine] "cat log.txt" > /dev/clipboard.

Edit: Ein hilfreicher Kommentar von nbren12:

Es ist fast immer möglich, eine umgekehrte SSH-Verbindung über die SSH-Portweiterleitung einzurichten. Fügen Sie einfach RemoteForward 127.0.0.1:2222 127.0.0.1:22den Servereintrag in Ihrem lokalen Computer hinzu .ssh/configund führen Sie ihn ssh -p 2222 127.0.0.1auf dem Remotecomputer aus, der dann die Verbindung zum lokalen Computer umleitet. - nbren12

Dominykas Mostauskis
quelle
6
+1: So viel einfacher als andere Lösungen, wenn eine umgekehrte SSH-Verbindung nicht möglich ist!
John Dibling
9
Sie verdienen mehr Likes für diese extrem einfache Lösung!
Kamil Dziedzic
31
Für diejenigen von uns unter Mac OSX,ssh [remote-machine] "cat log.txt" | pbcopy
Chowey
1
Gemäß diesem Bericht hier musste ich verwenden cat, um dies unter Cygwin Windows 8 zum Laufen zu bringen: ssh [remote-machine] "cat log.txt" | cat > /dev/clipboard(Natürlich war mein Remote-Befehl nicht cat; es war etwas anderes in einer vagabundierenden virtuellen Maschine, also lief ich tatsächlich vagrant ssh -c "command" | cat > /dev/clipboard)
tiby
7
Es ist fast immer möglich, eine umgekehrte SSH-Verbindung über die SSH-Portweiterleitung einzurichten. Fügen Sie einfach RemoteForward 127.0.0.1:2222 127.0.0.1:22den Servereintrag in Ihrem lokalen Computer hinzu .ssh/configund führen Sie ihn ssh -p 2222 127.0.0.1auf dem Remotecomputer aus, der dann die Verbindung zum lokalen Computer umleitet.
nbren12
30

Ich habe eine großartige Lösung gefunden, die keine umgekehrte SSH-Verbindung erfordert!

Sie können xclip auf dem Remote-Host zusammen mit ssh X11 Forwarding und XQuartz auf dem OSX-System verwenden.

So richten Sie dies ein:

  1. Installieren Sie XQuartz (ich habe dies mit dem Rezept von solist + pivotal_workstation :: xquartz gemacht , aber Sie müssen nicht)
  2. Führen Sie XQuartz.app aus
  3. Öffnen Sie die XQuartz-Einstellungen ( kb_command+ ,).
  4. Stellen Sie sicher, dass "Synchronisierung aktivieren" und "Pasteboard aktualisieren, wenn sich CLIPBOARD ändert" aktiviert sind Beispiel für das Fenster "XQuartz-Einstellungen"
  5. ssh -X remote-host "echo 'hello from remote-host' | xclip -selection clipboard"
TrinitronX
quelle
1
Wie unterscheidet sich das von ssh remote-host "echo 'hello from remote-host' | pbcopy? Dies wäre eine ausgezeichnete Antwort, wenn es so etwas funktionieren würde: ssh -X remote-hostdann auf dem Remote-Host:echo 'hello from remote-host' | xclip -selection clipboard
kqw
5
@ KasperSouren. Ich glaube, es funktioniert so, wie Sie es sich erhoffen. Die `| xclip` steht in doppelten Anführungszeichen.
GDW2
1
Im Jahr 2016 ist dies offensichtlich DIE beste, schnörkellose Lösung. Vergessen Sie andere Reverse-SSH-basierte Lösungen.
Shivams
1
Gibt es eine Möglichkeit, dies zu tun, ohne dass es sich nur um einen einmaligen Befehl handelt? Ich möchte in einer interaktiven Sitzung über ssh bei meinem Remote-Server angemeldet sein und dann willkürlich an meine lokale Zwischenablage senden können. Benötigt das Reverse SSH?
Kwas
2
@Kvass: Solange Sie -Xfür die X11-Weiterleitung über SSH verwenden, können X11-Programme Ihre Zwischenablage über die obigen XQuartz-Einstellungen aktualisieren. Der einmalige Befehl soll zeigen, dass das Senden von etwas über echodie Zwischenablage des Remote-Hosts über xclipfunktioniert und mit Ihrem lokalen SSH-Client-Host synchronisiert werden sollte. Beachten Sie, wie @ gdw2 sagt: "Das | xclipsteht in doppelten Anführungszeichen". Als solches wird es als Befehl auf dem Remote-Server ausgeführt, um etwas an die Zwischenablage zu senden.
TrinitronX
18

Reverse Tunnel Port auf SSH Server

Alle vorhandenen Lösungen benötigen entweder:

  • X11 auf dem Client (wenn Sie es haben, xclipauf dem Server funktioniert gut) oder
  • Der Client und der Server müssen sich im selben Netzwerk befinden (was nicht der Fall ist, wenn Sie bei der Arbeit versuchen, auf Ihren Heimcomputer zuzugreifen).

Hier ist eine andere Möglichkeit, obwohl Sie ändern müssen, wie Sie ssh in Ihren Computer.

Ich habe damit angefangen und es ist bei weitem nicht so einschüchternd, wie es aussieht. Probieren Sie es aus.

Client (Start der SSH-Sitzung)

ssh username@server.com -R 2000:localhost:2000

(Hinweis: Machen Sie dies zu einer Tastenkombination, damit Sie sie nicht eingeben müssen.)

Client (eine andere Registerkarte)

nc -l 2000 | pbcopy

Hinweis: Wenn Sie nicht haben pbcopy dann nur teein eine Datei.

Server (innerhalb der SSH-Sitzung)

cat some_useful_content.txt | nc localhost 2000

Weitere Hinweise

Selbst wenn Sie sich mitten in einer SSH-Sitzung befinden, gibt es eine Möglichkeit, einen Tunnel zu starten, aber ich möchte die Leute nicht von dem abhalten, was wirklich nicht so schlimm ist, wie es aussieht. Aber ich werde die Details später hinzufügen, wenn ich Interesse sehe

Sridhar Sarnobat
quelle
1
+1 - das ist ziemlich ordentlich. Allerdings cat some_useful_content.txt | nc localhost 2000scheint der Befehl zu hängen, wenn ich das tue. Ich muss manuell Strg-C drücken, um es zu stoppen, und erst dann gelangt der Inhalt zu meinem Client-Clip / Pasteboard
Alan Storm
1
Es wird warten, bis jemand die Daten am anderen Ende aus der Warteschlange entfernt.
Sridhar Sarnobat
Eigentlich glaube ich, ich habe deine Frage falsch verstanden. Ich bin mir nicht sicher, warum das passiert.
Sridhar Sarnobat
nc -l -pfunktioniert bei mir, nc -ltut es aber einfach nicht. Und ich habe auch das Problem von @AlanStorm.
HappyFace
1
Ich habe das Problem des Aufhängens von Netcat durch Angabe gelöst -c. Ich verwende GNU Netcat, das von Brew installiert wurde.
HappyFace
7

Es gibt verschiedene Tools für den Zugriff auf X11-Auswahlen, einschließlich xclip und XSel . Beachten Sie, dass X11 traditionell über mehrere Auswahlmöglichkeiten verfügt und die meisten Programme sowohl die Zwischenablage als auch die primäre Auswahl (die nicht identisch sind) verstehen. Emacs können auch mit der sekundären Auswahl arbeiten, aber das ist selten und niemand weiß wirklich, was mit geschnittenen Puffern zu tun ist ...

$ xclip -help
Verwendung: xclip [OPTION] [DATEI] ...
Greifen Sie zum Lesen oder Schreiben auf eine X-Serverauswahl zu.

  -i, -in liest Text in die X-Auswahl aus Standardeingaben oder Dateien ein
                   (Standard)
  -o, -out druckt die Auswahl nach Standard aus (im Allgemeinen für
                   Weiterleitung an eine Datei oder ein Programm)
  -l, -schleift die Anzahl der Auswahlanforderungen, auf die vor dem Beenden gewartet werden muss
  -d, -display X-Anzeige zum Herstellen einer Verbindung (z. B. localhost: 0 ")
  -h, -Hilfe Nutzungsinformationen
      Auswahlauswahl für den Zugriff ("primär", "sekundär", "Zwischenablage" oder "Pufferschnitt")
      -noutf8 behandelt Text nicht als utf-8, sondern verwendet alten Unicode
      -Versionsversionsinformationen
      -silent Fehler nur im Hintergrund ausführen (Standard)
      -ruhe im Vordergrund laufen, zeigen, was passiert
      -verbose laufender Kommentar

Melden Sie Fehler an <[email protected]>
$ xsel -help
Verwendung: xsel [Optionen]
Bearbeiten Sie die X-Auswahl.

Standardmäßig wird die aktuelle Auswahl ausgegeben und bei beiden nicht geändert
Standardeingang und Standardausgang sind Klemmen (ttys). Andernfalls,
Die aktuelle Auswahl wird ausgegeben, wenn die Standardausgabe kein Terminal ist
(tty), und die Auswahl wird von der Standardeingabe bei Standardeingabe festgelegt
ist kein Terminal (tty). Wenn Eingabe- oder Ausgabeoptionen angegeben sind, dann
Das Programm verhält sich nur im angeforderten Modus.

Wenn sowohl Eingabe als auch Ausgabe erforderlich sind, ist die vorherige Auswahl
Ausgabe, bevor sie durch den Inhalt der Standardeingabe ersetzt wird.

Eingabemöglichkeiten
  -a, --append Hängt die Standardeingabe an die Auswahl an
  -f, --follow An die Auswahl anhängen, wenn die Standardeingabe zunimmt
  -i, --input Liest die Standardeingabe in die Auswahl ein

Ausgabeoptionen
  -o, --output Schreibt die Auswahl in die Standardausgabe

Aktionsoptionen
  -c, --clear Löscht die Auswahl
  -d, --delete Fordert an, dass die Auswahl gelöscht wird und dass
                        Die Anwendung, deren Eigentümer sie ist, löscht ihren Inhalt

Auswahlmöglichkeiten
  -p, --primary Bedient die PRIMARY-Auswahl (Standard)
  -s, --secondary Arbeitet mit der Auswahl SECONDARY
  -b, --clipboard Bearbeiten Sie die CLIPBOARD-Auswahl

  -k, --keep Ändern Sie nicht die Auswahl, sondern machen Sie die PRIMARY
                        und SECONDARY-Auswahl bleibt auch nach dem bestehen
                        Programme, die sie beim Beenden ausgewählt wurden.
  -x, --exchange Tauschen Sie die PRIMARY- und SECONDARY-Auswahl aus

X Optionen
  - Anzeigename anzeigen
                        Geben Sie die Verbindung zum X-Server an
  -t ms, --selectionTimeout ms
                        Geben Sie das Zeitlimit in Millisekunden an, innerhalb dessen die
                        Auswahl muss abgerufen werden. Ein Wert von 0 (Null)
                        Gibt kein Zeitlimit an (Standard)

Verschiedene Optionen
  -l, --logfile Geben Sie die Datei an, in die Fehler protokolliert werden sollen, wenn sie getrennt werden.
  -n, --nodetach Nicht vom Steuerterminal abnehmen. Ohne
                        Mit dieser Option wird xsel zum Hintergrund
                        Prozess in Eingabe-, Austausch- und Keep-Modi.

  -h, --help Zeigt diese Hilfe an und beendet sie
  -v, --verbose Informierte Nachrichten drucken
  --version Versionsinformationen ausgeben und beenden

Bitte melden Sie Fehler an <[email protected]>.

Kurz gesagt, Sie sollten versuchen, xclip -i/ xclip -ooder xclip -i -sel clip/ xclip -o -sel clipoder xsel -i/ xsel -ooder xsel -i -b/ xsel -o -b, je nachdem, was Sie wollen.

kurzlebig
quelle
4
So fügen Sie den Beitrag von @ephemient hinzu: Um xclip & xsel mit einem Remote-Host zu verwenden, können Sie die X11-Weiterleitung wie folgt verwenden : ssh -C -X user@remote-host. Wenn das Ausführen von xclip auf der Remote-Seite nicht funktioniert, stellen Sie sicher, dass X11Forwarding yeses in der Remote- /etc/ssh/sshd_configDatei festgelegt ist. Stellen Sie außerdem sicher, dass xauthes auf der Remote-Seite installiert ist. Für eine kopflose Maschine können Sie xauthund installieren xvfb.
TrinitronX
Hier finden Sie eine Beschreibung mit zusätzlichen Details sowie vim-Tastenkombinationen.
Tim Bunce
1
@TrinitronX oh wow - schlag meinen Kopf gegen eine Wand, danke für die xvfbErwähnung. Ich habe einen Headless-Server ausgeführt, also muss X11 nicht ausgeführt worden sein!
Cam
5

Dies ist meine Lösung basierend auf SSH Reverse Tunnel, Netcat und Xclip.

Erstellen Sie zuerst ein Skript (z. B. clipboard-daemon.sh) auf Ihrer Workstation:

#!/bin/bash
HOST=127.0.0.1
PORT=3333

NUM=`netstat -tlpn 2>/dev/null | grep -c " ${HOST}:${PORT} "`
if [ $NUM -gt 0 ]; then
    exit
fi

while [ true ]; do
    nc -l ${HOST} ${PORT} | xclip -selection clipboard
done

und starten Sie es im Hintergrund.

./clipboard-daemon.sh&

Nach dem Empfang eines Teils der Daten wird die nc-Piping-Ausgabe an xclip und den Respawning-Prozess gestartet

Starten Sie dann die SSH-Verbindung zum Remote-Host:

ssh user@host -R127.0.0.1:3333:127.0.0.1:3333

Versuchen Sie Folgendes, während Sie auf der Remote-Box angemeldet sind:

echo "this is test" >/dev/tcp/127.0.0.1/3333

Versuchen Sie dann, auf Ihrer Workstation einzufügen

Sie können natürlich ein Wrapper-Skript schreiben, das zuerst clipboard-daemon.sh und dann ssh session startet. So funktioniert es bei mir. Genießen.

Krzysztof Księżyk
quelle
Diese Lösung hat für mich am besten funktioniert. es ist nicht zu kompliziert und funktioniert richtig.
Marcel Valdez Orozco
Beste Lösung meiner Meinung nach. Sie müssen sich keine Sorgen machen, dass Sie eine umgekehrte SSH-Verbindung zulassen, die Auswirkungen auf die Sicherheit hat, und die Endlosschleife ist eine nette Geste.
R. Taukulis
4

Kein Einzeiler, erfordert aber kein zusätzliches SSH .

  • netcatbei Bedarf installieren
  • Verwenden Sie Termbin : cat ~/some_file.txt | nc termbin.com 9999. Dadurch wird die Ausgabe auf die termbinWebsite kopiert und die URL zu Ihrer Ausgabe gedruckt.
  • Besuchen Sie diese URL von Ihrem Computer, Sie erhalten Ihre Ausgabe

Verwenden Sie es natürlich nicht für sensible Inhalte.

maxbellec
quelle
Wow, das ist eine sehr kreative Lösung.
Sridhar Sarnobat
3

Diese Antwort entwickelt sich sowohl nach der gewählten Antwort, indem mehr Sicherheit hinzugefügt wird.

Diese Antwort erörterte die allgemeine Form

<command that makes output> | \
    ssh <user A>@<host A> <command that maps stdin to clipboard>

Wo Sicherheit fehlt werden kann , ist in den sshBerechtigungen ermöglichen <user B>auf host B>bis sshzu host Aund führen jeden Befehl.

Natürlich kann Bder AZugriff bereits über einen sshSchlüssel erfolgen, und es kann sogar ein Passwort vorhanden sein. Eine andere Sicherheitsebene kann jedoch den Umfang der zulässigen Befehle einschränken, die ausgeführt werden Bkönnen A, z. B. so, dass rm -rf /sie nicht aufgerufen werden können. (Dies ist besonders wichtig, wenn der sshSchlüssel kein Passwort hat.)

Glücklicherweise verfügt es sshüber eine integrierte Funktion, die als Befehlsbeschränkung oder erzwungener Befehl bezeichnet wird . Siehe ssh.com oder diese serverfault.com-Frage .

Die folgende Lösung zeigt die allgemeine Formularlösung zusammen mit der ssh Befehlsbeschränkung erzwungenen .

Beispiellösung mit Befehlsbeschränkung hinzugefügter

Diese sicherheitsverbesserte Lösung folgt der allgemeinen Form - der Aufruf ab der sshSitzung host-Blautet einfach:

cat <file> | ssh <user-A>@<host A> to_clipboard

Der Rest zeigt das Setup, damit das funktioniert.

Einrichtung der ssh-Befehlsbeschränkung

Angenommen, das Benutzerkonto Bist user-Baktiviert und B verfügt über einen SSH-Schlüssel id-clip, der auf die übliche Weise erstellt wurde ( ssh-keygen).

Dann gibt es im user-ASSH-Verzeichnis eine Datei

/home/user-A/.ssh/authorized_keys

das erkennt den Schlüssel id-clipund ermöglicht die sshVerbindung.

Normalerweise ist der Inhalt jeder Zeile authorized_keysgenau der öffentliche Schlüssel, der autorisiert wird, z. B. der Inhalt von id-clip.pub.

Um jedoch die Befehlsbeschränkung zu erzwingen, wird dem auszuführenden Befehl der Inhalt des öffentlichen Schlüssels (in derselben Zeile) vorangestellt.
In unserem Fall:

command="/home/user-A/.ssh/allowed-commands.sh id-clip",no-agent-forwarding,no-port-forwarding,no-user-rc,no-x11-forwarding,no-pty <content of file id-clip.pub>

Der angegebene Befehl "/home/user-A/.ssh/allowed-commands.sh id-clip"und nur dieser festgelegte Befehl wird immer dann ausgeführt, wenn mit dem Schlüssel id-clipeine sshVerbindung hergestellt wird host-A- unabhängig davon, welcher Befehl in der sshBefehlszeile geschrieben ist .

Der Befehl gibt eine Skriptdatei allowed-commands.shund den Inhalt dieser Skriptdatei an

#/bin/bash
#
# You can have only one forced command in ~/.ssh/authorized_keys. Use this
# wrapper to allow several commands.

Id=${1}

case "$SSH_ORIGINAL_COMMAND" in
    "to-clipboard")
          notify-send "ssh to-clipboard, from ${Id}"
        cat | xsel --display :0 -i -b
          ;;
    *)
        echo "Access denied"
        exit 1
        ;;
esac

Der ursprüngliche Anruf sshan der Maschine Bwar

... | ssh <user-A>@<host A> to_clipboard

Die Zeichenfolge to-clipboardwird allowed-commands.shvon der Umgebungsvariablen übergeben SSH_ORIGINAL_COMMAND. Außerdem haben wir den Namen des Schlüssels id-clipaus der Zeile übergeben, in authorized_keysder nur von zugegriffen wirdid-clip .

Die Linie

          notify-send "ssh to-clipboard, from ${Id}"

ist nur eine Popup-Meldungsbox, die Sie darüber informiert, dass die Zwischenablage geschrieben wird - das ist wahrscheinlich auch eine gute Sicherheitsfunktion. ( notify-sendfunktioniert unter Ubuntu 18.04, vielleicht nicht unter anderen).

In der Schlange

cat | xsel --display :0 -i -b

Der Parameter --display :0ist erforderlich, da der Prozess keine eigene X-Anzeige mit einer Zwischenablage hat und daher explizit angegeben werden muss. Dieser Wert :0funktioniert unter Ubuntu 18.04 mit Wayland Windows Server. Bei anderen Setups funktioniert es möglicherweise nicht. Bei einem Standard-X-Server kann diese Antwort hilfreich sein.

host-A /etc/ssh/sshd_config Parameter

Zum Schluss noch ein paar Parameter /etc/ssh/sshd_configauf dem Host A, die festgelegt werden sollten, um die Berechtigung zum sshHerstellen einer Verbindung und die Berechtigung zum Verwenden von -key nur ohne Kennwort sicherzustellen:

PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
AllowUsers user-A

Damit der sshdServer die Konfiguration erneut liest

sudo systemctl restart sshd.service

oder

sudo service sshd.service restart

Fazit

Es ist ein gewisser Aufwand, es einzurichten, aber andere Funktionen to-clipboardkönnen parallel zum selben Framework erstellt werden.

Craig Hicks
quelle
1
Das Xsel mit Remoteforwarding war die einzige Antwort, die unter Ubuntu 18.04, auf dem i3 lokal ausgeführt wird, für mich funktioniert hat. Keine X11-Weiterleitung erforderlich.
Jay Stanley
2

Die einfachste Lösung von allen, wenn Sie unter OS X mit Terminal arbeiten und auf einem Remote-Server herumgespielt haben und die Ergebnisse einer Textdatei, eines Protokolls oder einer CSV abrufen möchten, einfach:

1) Cmd-Kum den Ausgang des Terminals zu löschen

2) cat <filename>um den Inhalt der Datei anzuzeigen

3) Cmd-Sum den Terminalausgang zu speichern

Sie müssen die erste und letzte Zeile der Datei manuell entfernen, aber diese Methode ist etwas einfacher, als sich auf andere zu installierende Pakete, "Reverse Tunnels" und den Versuch einer statischen IP usw. zu verlassen.

tw0000
quelle
+1 für eine nützliche Technik, die ich selbst verwendet habe. Sie zwingt Sie jedoch dazu, Ihren Terminalverlauf zu verlieren, und (wie bereits erwähnt) das Problem mit der ersten / letzten Zeile ist etwas umständlich.
Alan Storm
Einverstanden @AlanStorm
tw0000
Das größere Problem bei diesem Ansatz besteht darin, dass nur die Anzahl der Zeilen gespeichert wird, die Ihr Terminalpuffer behält. Oft ist das kein Problem, aber wenn Sie versuchen, den Inhalt einer Protokolldatei
abzurufen,
Das stimmt @ Sridhar-Sarnobat, es ist im Allgemeinen keine sehr gute Lösung. Ich benutze nur scp!
tw0000