xclip na bezgłowym serwerze

27

Używam xclip do kopiowania danych wyjściowych poleceń bash, takich jak:

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

Tak, że mogę wkleić dane wyjściowe do innej sesji terminala.

Próbowałem użyć go na moim bezgłowym serwerze (ubuntu 13.04), który uruchamia się bez x. To nie działa z błędem:

Error: Can't open display: (null)

Czy jest na to jakiś sposób? Zdaję sobie sprawę, że ponieważ program nazywa się xclip, może nie być to możliwe.

Anake
źródło

Odpowiedzi:

29

Schowek jest dostarczana przez serwer X . Nie ma znaczenia, czy serwer jest bezgłowy, czy nie, ważne jest, że lokalna sesja graficzna jest dostępna dla programów działających na zdalnym komputerze. Dzięki przezroczystej sieci X jest to możliwe.

Zakładam, że łączysz się ze zdalnym serwerem za pomocą SSH z komputera z systemem Linux. Upewnij się, że przekazywanie X11 jest włączone zarówno w konfiguracji klienta, jak i konfiguracji serwera. W konfiguracji klienta, trzeba mieć linię ForwardX11 yesw ~/.ssh/configgo mieć domyślnie lub przekazać opcję -Xdo sshpolecenia tylko dla tej sesji. W konfiguracji serwera, trzeba mieć linię X11Forwarding yesw /etc/ssh/sshd_config(jest obecny domyślnie w Ubuntu).

Aby sprawdzić, czy jest włączone przekazywanie X11, spójrz na wartość DISPLAYzmiennej środowiskowej: echo $DISPLAY. Powinieneś zobaczyć wartość podobną localhost:10(aplikacje działające na zdalnym komputerze są proszone o połączenie się z wyświetlaczem działającym na tym samym komputerze, ale połączenie ekranowe jest w rzeczywistości przekazywane przez SSH do wyświetlacza po stronie klienta). Pamiętaj, że jeśli DISPLAYnie jest ustawiony, nie ma potrzeby ustawiania go ręcznie: zmienna środowiskowa jest zawsze ustawiana poprawnie, jeśli przekazywanie jest na miejscu. Jeśli potrzebujesz do diagnozowania problemów z połączeniem SSH, przekaż opcję -vvvaby sshdostać szczegółowy ślad tego, co się dzieje.

Jeśli łączysz się za pomocą innych środków, możesz, ale nie musisz, osiągnąć przekazywanie X11. Jeśli na kliencie jest zainstalowany system Windows, PuTTY obsługuje przekazywanie X11; będziesz musiał uruchomić serwer X na komputerze z systemem Windows, takim jak Xming .

Gilles „SO- przestań być zły”
źródło
+1 świetna odpowiedź, ale jak wspomniałem, ten serwer działa bez x, więc odpowiedź Nykakins jest bardziej trafna.
Anake
@Aake, obawiam się, że źle odczytałeś moją odpowiedź. Zdalny wyświetlacz nie wymaga żadnego serwera X działającego na zdalnym komputerze. Musisz mieć xclipzainstalowany program i biblioteki pomocnicze, ale to nie wymaga instalacji serwera X.
Gilles „SO - przestań być zły”,
2
Zastanawiam się ... czy to podejście jest poprawne, gdy łączysz się z klienta OSX z bezgłowym serwerem Ubuntu?
Ken
3
To mi nie działa. Idę z mac -> serwer linux. X11Forwarding yesjest w sshd_config na serwerze i zdałem -Xkiedy ssh'd na serwer. Error: Can't open display: (null)oncat ~/.ssh/id_rsa.pub | xclip -selection clipboard
chovy
1
ok, pomyślałem, że to zadziała, ponieważ pbcopyjuż działa lokalnie na moim komputerze Mac. Jak uruchomić serwer X na komputerze Mac i co mam ustawić $DISPLAY?
chovy
4

Sam Bash nie ma schowka. To funkcja X. xcliptjest tylko interfejsem wiersza poleceń i jak widać, wymaga display. Rozwiązaniem jest po prostu użycie pliku tymczasowego:

$ echo 123 > /tmp/f
$ tr -d '2' < /tmp/f
13
Nykakin
źródło
4
nie rozumiem
chovy,
Myślę, że połączyłeś dwie różne odpowiedzi z różnych postów.
markroxor