Sida 1 av 1

Klippbord och terminal fråga

Postat: 09 jan 2011, 20:47
av dolk
På lokal maskin så kan man lägga klipp på klippbordet mha terminal e.g.

echo "hej" | putclip

Finns det något liknande trick för att fånga text när man sitter i ett shell inloggad på en annan maskin. Det jag är ute efter är att enkelt fylla det lokala klippbordet från ett remote shell.

Re: Klippbord och terminal fråga

Postat: 11 jan 2011, 00:49
av David Andersson
1) Hur fick du putclip? Jag använder xclip.

2) Vilken sida tar initiativ? Är det remote som tänker, NU har jag en ny text som ska till locals klippbord, eller är det local som tänker, NU behöver jag hämta en text från remote och lägga i mitt klippbord?

Man kan använda en client/server-lösning. Beroende på vem som tar initiativet så ska local vara client och remote server eller tvärtom.

Exempel där remote tar initiativet

Starta en server i en terminal på local:

Kod: Markera allt

while true; do ncat -l 1234 | xclip -i; done
Varje gång remote ska skicka text till locals klippbord kör i remote kommandot:

Kod: Markera allt

echo -n "hej" | ncat --send-only LOCAL 1234
Exempel där local tar initiativet

Starta en server i en terminal inloggad på remote:

Kod: Markera allt

perl -we 'use Net::Server;sub Net::Server::process_request{print "hej";};Net::Server->run(port=>1234);'
Varje gång local behöver text från remote i klippbordet kör i local kommandot:

Kod: Markera allt

ncat REMOTE 1234 | xclip -i
(Ersätt LOCAL och REMOTE med namnet eller ip-adressen på resp dator. Ersätt vid behov 1234 med 9876 eller annat portnummer. Fundera på om säkerheten äventyras av dessa simpla servrar. Skriv om shell- och perl-kommandona i python, och spara i två små script så blir det mycket vackrare. Reservation för fel, har bara testat med 127.0.0.1.)

Re: Klippbord och terminal fråga

Postat: 11 jan 2011, 08:33
av dolk
tack för svar. I första hand är det att skicka text från remote till local.

Jag testade över localhost. Och kopplingen fungerar men pipningen till xclip verkar inte göra det. Inget hamnar på lokala klippbordet. Det som redan ligger i utklippt "buffern" ligger kvar.

Kanske kan samma metod användas över fil. Det är inte alltid toköppet i brandväggar överallt. Det vore bra om den existerande kopplingen kunde användas typ sftp.

Det jag hade hoppats på var en superelegant lösning med typ stöd i skalet på något sätt. Men det verkar inte existera.

Edit:
Hmm. Det fungerar typ delvis.
bjdo@bjdo-VirtualBox:~$ echo "hej" | ncat --send-only localhost 1234
bjdo@bjdo-VirtualBox:~$ xclip -o
hej

Detta fungerar uppenbarligen. Men när jag klistar in ctrl+v i ex gedit så ligger inte klippet där. Har xclip en annan buffer än desktopen?


Edit igen:
xclip -selection c, löser detta.

Re: Klippbord och terminal fråga

Postat: 11 jan 2011, 15:30
av David Andersson
dolk skrev:Edit igen:
xclip -selection c, löser detta.
Tänkte inte på det. Det finns ju två klippbord (minst). Ett för windows-aktigt beteende med ctrl-c & ctrl-v eller Edit>Copy & Edit>Paste, och ett för unix-aktigt beteende med vänsterklick & mittenklick.
dolk skrev: Det jag hade hoppats på var en superelegant lösning med typ stöd i skalet på något sätt. Men det verkar inte existera.
Det beror på vad du menar med skalet. Upptäckte just att det går att göra med ssh. Logga in i remote med "ssh -Y" så kan X11-program i remote använda X11-displayen i local. Då kan du strunta i server-biten i mitt tidigare inlägg (antagligen mycket säkrare så) och skicka text direkt till locals klippbord med följande kommando i remote:

Kod: Markera allt

echo -n hej | xclip -i
(med "-selection c" om det ska till ctrl-v i stället för mittenklick)

Re: Klippbord och terminal fråga

Postat: 11 jan 2011, 20:33
av dolk
En elegant lösning helt klart, det var något sånt jag hade i åtanke. Den ska jag komma ihåg. Tyvärr ställer det lite krav på att remoteburken, exempelvis funkar det inte på en fattig nätverkshårdisklåda.