xclip di server tanpa kepala

27

Saya telah menggunakan xclip untuk menyalin output dari perintah bash seperti ini:

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

Sehingga saya bisa menempelkan output ke sesi terminal lain.

Saya mencoba menggunakannya di server tanpa kepala saya (ubuntu 13.04), yang dimulai tanpa x. Tidak berfungsi dengan kesalahan:

Error: Can't open display: (null)

Apakah ada jalan keluarnya? Saya menyadari bahwa melihat program ini disebut xclip, itu tidak mungkin.

Anake
sumber

Jawaban:

29

Clipboard disediakan oleh X server . Tidak masalah apakah server tidak memiliki kepala atau tidak, yang penting adalah bahwa sesi grafis lokal Anda tersedia untuk program yang berjalan pada mesin jarak jauh. Berkat desain transparan-jaringan X, ini dimungkinkan.

Saya berasumsi bahwa Anda terhubung ke server jarak jauh dengan SSH dari mesin yang menjalankan Linux. Pastikan penerusan X11 diaktifkan di konfigurasi klien dan di konfigurasi server. Di konfigurasi klien, Anda harus memiliki garis ForwardX11 yesmasuk ~/.ssh/configuntuk mengaktifkannya secara default, atau meneruskan opsi -Xke sshperintah hanya untuk sesi itu. Dalam konfigurasi server, Anda harus memiliki garis X11Forwarding yesdi /etc/ssh/sshd_config(itu hadir secara default pada Ubuntu).

Untuk memeriksa apakah X11 forwarding diaktifkan, melihat nilai dari DISPLAYvariabel lingkungan: echo $DISPLAY. Anda akan melihat nilai seperti localhost:10(aplikasi yang berjalan di mesin jarak jauh diperintahkan untuk terhubung ke layar yang berjalan di mesin yang sama, tetapi koneksi layar sebenarnya diteruskan oleh SSH ke tampilan sisi klien Anda). Perhatikan bahwa jika DISPLAYtidak disetel, tidak ada gunanya mengaturnya secara manual: variabel lingkungan selalu ditetapkan dengan benar jika penerusan sudah ada. Jika Anda perlu untuk mendiagnosa masalah koneksi SSH, memberikan opsi -vvvuntuk sshmendapatkan jejak rinci tentang apa yang terjadi.

Jika Anda terhubung melalui beberapa cara lain, Anda mungkin atau mungkin tidak dapat mencapai penerusan X11. Jika klien Anda menjalankan Windows, Putty mendukung penerusan X11; Anda harus menjalankan server X pada mesin Windows seperti Xming .

Gilles 'SANGAT berhenti menjadi jahat'
sumber
+1 jawaban cemerlang, tetapi seperti yang saya sebutkan server ini berjalan tanpa x sehingga jawaban Nykakins lebih relevan.
Anake
@ Membuatku khawatir kamu salah membaca jawabanku. Tampilan jarak jauh tidak melibatkan server X apa pun yang berjalan pada mesin jarak jauh. Anda perlu xclipmenginstal program dan pustaka pendukung, tetapi itu tidak melibatkan pemasangan server X.
Gilles 'SO- stop being evil'
2
Hanya ingin tahu ... apakah pendekatan ini valid ketika menghubungkan dari klien OSX ke server Ubuntu tanpa kepala?
ken
3
Ini tidak berhasil untuk saya. Saya pergi dari mac -> server linux. X11Forwarding yesada di sshd_config di server dan saya lulus -Xketika saya ssh'd ke server. Error: Can't open display: (null)padacat ~/.ssh/id_rsa.pub | xclip -selection clipboard
chovy
1
ok saya pikir itu akan berhasil karena pbcopysudah bekerja di mac saya secara lokal. Bagaimana cara memulai server x pada mac dan apa yang saya set $DISPLAYuntuk?
chovy
4

Bash sendiri tidak memiliki clipboard. Ini adalah fitur X. xclipthanyalah antarmuka baris perintah dan seperti yang Anda lihat, itu membutuhkan display. Cara lain adalah dengan menggunakan file sementara:

$ echo 123 > /tmp/f
$ tr -d '2' < /tmp/f
13
Nykakin
sumber
4
saya tidak mengerti.
chovy
Saya pikir Anda menggabungkan dua jawaban berbeda dari pos yang berbeda.
markroxor