हेडलेस सर्वर पर xclip


27

मैं bash कमांड के आउटपुट को कॉपी करने के लिए xclip का उपयोग कर रहा हूं:

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

ताकि मैं आउटपुट को दूसरे टर्मिनल सत्र में पेस्ट कर सकूं।

मैं इसे अपने हेडलेस सर्वर (ubuntu 13.04) पर उपयोग करने की कोशिश कर रहा था, जिसे बिना x के शुरू किया गया है। यह त्रुटि के साथ काम नहीं करता है:

Error: Can't open display: (null)

क्या इसके चारों ओर एक रास्ता है। मुझे पता है कि कार्यक्रम को xclip कहा जाता है, यह देखना संभव नहीं हो सकता है।

जवाबों:


29

क्लिपबोर्ड एक्स सर्वर द्वारा प्रदान किया जाता है । इससे कोई फर्क नहीं पड़ता कि सर्वर हेडलेस है या नहीं, क्या मायने रखता है कि आपका स्थानीय ग्राफिकल सेशन रिमोट मशीन पर चलने वाले प्रोग्राम्स के लिए उपलब्ध है। एक्स के नेटवर्क-पारदर्शी डिजाइन के लिए धन्यवाद, यह संभव है।

मुझे लगता है कि आप लिनक्स चलाने वाली मशीन से SSH के साथ दूरस्थ सर्वर से जुड़ रहे हैं। सुनिश्चित करें कि X11 अग्रेषण क्लाइंट कॉन्फ़िगरेशन और सर्वर कॉन्फ़िगरेशन दोनों में सक्षम है। ग्राहक विन्यास में, आप लाइन की आवश्यकता है ForwardX11 yesमें ~/.ssh/configडिफ़ॉल्ट रूप से उस पर है, या विकल्प पारित -Xकरने के लिए sshसिर्फ इतना है कि सत्र के लिए आदेश। सर्वर कॉन्फ़िगरेशन में, आपको लाइन X11Forwarding yesइन /etc/ssh/sshd_config(यह उबंटू पर डिफ़ॉल्ट रूप से मौजूद है) करने की आवश्यकता है।

यह जांचने के लिए कि क्या X11 अग्रेषण सक्षम है, DISPLAYपर्यावरण चर के मूल्य को देखें echo $DISPLAY:। आपको एक मूल्य देखना चाहिए localhost:10(रिमोट मशीन पर चलने वाले एप्लिकेशन को उसी मशीन पर चलने वाले डिस्प्ले से कनेक्ट करने के लिए कहा जाता है, लेकिन यह डिस्प्ले कनेक्शन वास्तव में SSH द्वारा आपके क्लाइंट-साइड डिस्प्ले को अग्रेषित किया जाता है)। ध्यान दें कि यदि DISPLAYसेट नहीं किया गया है, तो इसे मैन्युअल रूप से सेट करने का कोई फायदा नहीं है: यदि अग्रेषित किया जाता है तो पर्यावरण चर हमेशा सही ढंग से सेट होता है। आप SSH कनेक्शन मुद्दों का निदान करने की जरूरत है, विकल्प पारित -vvvकरने के लिए sshक्या हो रहा है की एक विस्तृत पता लगाने के लिए।

यदि आप किसी अन्य माध्यम से कनेक्ट कर रहे हैं, तो आप X11 अग्रेषण प्राप्त करने में सक्षम हो सकते हैं या नहीं कर सकते हैं। यदि आपका क्लाइंट Windows चला रहा है, तो PuTTY X11 अग्रेषण का समर्थन करता है; आपको Windows मशीन जैसे Xming पर एक X सर्वर चलाना होगा ।


+1 शानदार उत्तर, लेकिन जैसा कि मैंने उल्लेख किया है कि यह सर्वर बिना x के चल रहा है, इसलिए Nykakins उत्तर अधिक प्रासंगिक है।
8

@Anake मुझे डर है कि आपने मेरे जवाब को गलत बताया। रिमोट डिस्प्ले में रिमोट मशीन पर चलने वाले किसी भी एक्स सर्वर को शामिल नहीं किया जाता है। आपको xclipप्रोग्राम इंस्टॉल करने और सहायक लाइब्रेरी की आवश्यकता है, लेकिन इसमें एक्स सर्वर स्थापित करना शामिल नहीं है।
गिल्स एसओ- बुराई को रोकें '

2
सोच रहा था ... क्या यह दृष्टिकोण OSX क्लाइंट से हेडलेस उबंटू सर्वर से कनेक्ट करते समय मान्य है?
केन

3
यह मेरे लिए काम नहीं करता है। मैं mac -> लिनक्स सर्वर से जा रहा हूँ। X11Forwarding yesसर्वर पर sshd_config में है और -Xजब मैंने सर्वर पर ssh'd किया तो मैं पास हुआ। Error: Can't open display: (null)परcat ~/.ssh/id_rsa.pub | xclip -selection clipboard
chovy

1
ठीक है मुझे लगा कि यह pbcopyमेरे मैक पर पहले से ही स्थानीय स्तर पर काम करेगा । मैं एक मैक पर एक एक्स सर्वर कैसे शुरू करूं और मुझे क्या करना $DISPLAYहै?
१०

4

बैश में ही एक क्लिपबोर्ड नहीं है। यह एक एक्स फीचर है। xcliptबस एक कमांड लाइन इंटरफ़ेस है और जैसा कि आप देख रहे हैं, इसकी आवश्यकता है display। एक तरह से चारों ओर एक अस्थायी फ़ाइल का उपयोग करने के लिए है:

$ echo 123 > /tmp/f
$ tr -d '2' < /tmp/f
13

4
मुझे नहीं मिला
१०

मुझे लगता है कि आपने अलग-अलग पोस्ट के दो अलग-अलग उत्तरों को संयोजित किया है।
मार्कशीट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.