लिनक्स: X11 में लॉग इन किए गए स्थानीय उपयोगकर्ता को संदेश कैसे भेजें?


10

कंसोल से X (xdm, fluxbox) में लॉग इन किया हुआ स्थानीय उपयोगकर्ता को संदेश (पॉपअप विंडो या कुछ) भेजना संभव है? उदाहरण के लिए: user1लॉग किया गया है और X / fluxbox का उपयोग करके, user2कंसोल में ssh द्वारा उसी बॉक्स में लॉग इन किया गया है। अब - user2संदेश भेजने के लिए क्या करना होगा user1?

जवाबों:


15

xmessageउपकरण आप वास्तव में ऐसा कर सकते हैं; एक पाठ संदेश के साथ उपयोगकर्ताओं के लिए एक पॉपअप विंडो प्रस्तुत करें।

उदाहरण: उपयोगकर्ता 2 बॉक्स और मुद्दों पर एक BASH सत्र में प्रवेश करता है:

export DISPLAY=':0.0'
xmessage "some message here"

यदि आप TSCH सत्र में प्रवेश करते हैं, तो यह कुछ इस तरह होगा:

setenv DISPLAY ':0.0'
xmessage "some message here'

वैकल्पिक रूप से, आप दो तरीकों में से एक में टर्मिनल सत्र के लिए संदेश भेज सकते हैं:

उपयोग करना wall(= सभी [उपयोगकर्ताओं को चेतावनी])

मैन पेज से:
वॉल फाइल की सामग्री को प्रदर्शित करता है या, डिफ़ॉल्ट रूप से, इसके मानक इनपुट, वर्तमान में उपयोगकर्ताओं में लॉग इन किए गए सभी टर्मिनलों पर।

यदि आप किसी विशिष्ट उपयोगकर्ता को लक्षित करना चाहते हैं, तो उपयोग करें write। फिर, आदमी हमें बताता है:

लेखन उपयोगिता आपको अन्य उपयोगकर्ताओं के साथ संवाद करने की अनुमति देती है, जो आपके टर्मिनल से उनके लिए लाइनों की नकल करके।


यदि कोई प्राप्तकर्ता ( user1मेरे उदाहरण में) X11 में लॉग इन किया गया है, और खोला नहीं है xtermया अन्य टर्मिनल - wallभी काम करेगा ? मुझे लगता है कि user1संदेश नहीं देखेंगे।
मारिओश

मैंने 'xmessage' समाधान को शामिल करने के लिए अपना उत्तर अपडेट किया। यह उपयोगकर्ता के लिए एक छोटी सी खिड़की दिखाएगा, भले ही उनके पास एक टर्मिनल खुला हो।
mjk

1
संयोग से, 'एप्रोपोस' जानने की एक उपयोगी उपयोगिता है; यह आपके द्वारा पास किए गए पाठ के लिए मैन्युअल पृष्ठ खोजता है। 'एप्रोपोस संदेश' चलाने की कोशिश करें और देखें कि यह क्या रिटर्न देता है।
mjk

मुझे पता है xmessageलेकिन इसे कैसे चलाना है user1और इस छोटी खिड़की को user2स्क्रीन पर खोलना है ? क्या यह भी संभव है?
7

@marioosh मैं यह भी जानना चाहूंगा कि यह कैसे करना है। क्या तुमने कभी यह पता लगा?

2

एक नियम के रूप में, X11 सत्र आमतौर पर एक "निजी" मोड में शुरू होते हैं, इसलिए आपको दो चीजों में से एक की आवश्यकता होती है: या तो, user2उनकी स्क्रीन तक पहुंचने के लिए आपको उनकी स्क्रीन, या सुपरयूज़र विशेषाधिकारों को "ब्रेक" करने की अनुमति देने के लिए सहवास ।

डेंजर: ध्यान रखें, एक बार जब आप उनकी स्क्रीन तक पहुँच प्राप्त करते हैं, तो आप कैप्चर कीस्ट्रोक (पासवर्ड सहित संभावित रूप से) और स्क्रीनशॉट लेने जैसे काम भी कर सकते हैं, इसलिए यह एक बड़ा सुरक्षा जोखिम है।

में सबसे मामलों में यह बजाय एक संदेश उपकरण या इन बातों के लिए चैट प्रोग्राम उपयोग को प्राथमिकता दी।

कैवियट एक तरफ:

सहयोग

यदि उन्हें अपनी स्क्रीन तक पहुंचने की user2अनुमति चाहिए user1, तो पहले user2एक आदेश जारी करना होगा:

 xhost +si:localuser:user1

यह संभावित रूप से किसी प्रकार की स्टार्ट-अप स्क्रिप्ट में जोड़ा जा सकता है; मुझे फ्लक्सबॉक्स नहीं पता है, लेकिन मुझे लगता है कि इसमें एक rcया सत्र-स्टार्ट हुक है।

एक बार जब यह issed किया गया है, user1तो लिख सकते हैं user2, के प्रदर्शन अगर वे इसे पा सकते हैं।

यदि user2इसके बारे में पता है, तो वे इसे हमेशा user1किसी अन्य तरीके से भेज सकते हैं ।

दूसरे उपयोगकर्ता का प्रदर्शन खोजना

एक विशिष्ट कार्य केंद्र पर, एक या दो से अधिक उपयोगकर्ता लॉगिन होना असामान्य है; किस स्थिति में, "अनुमान" कि प्रदर्शन आप चाहते हैं 0, 1, या हो सकता है 2 एक समाधान योग्य हो सकता है।

हालाँकि, अधिक पूर्ण समाधान के लिए, मान लें कि आपके पास एक मशीन है, जिसमें बहुत से उपयोगकर्ताओं को साइन इन किया जा सकता है, और जिसे आप चाहते हैं उसे खोजने का प्रयास करें।

for proc in /proc/[0-9]*/
do
     if [ Xorg = $(< $proc/comm ) ] 2>/dev/null && \
        [ $(id -u user2) -eq $(< $proc/loginuid) ] 2>/dev/null
     then
        for subproc in $(
        do
            echo "user2 display=" $(perl -ne 'if (m,DISPLAY=(.*)\0,) { print $1 }' < $subproc/environ)
        done
     fi
done

फिर, user1अंत में (ऊपर दिए गए प्रदर्शन मूल्य का उपयोग कर सकते हैं; मैंने अभी :14.0यहाँ लिखा है ...)

DISPLAY=:14.0 xmessage "Hello, user2"

इसके बजाय एक अधिसूचना भेजना

पूर्णता के हितों में, निम्नलिखित Gnome डेस्कटॉप पर काम करता है, कम से कम। मुझे नहीं पता कि फ्लक्सबॉक्स में नोटिफिकेशन विजेट है।

 DISPLAY=:14.0 notify-send "Hello, user2"

यह प्रदर्शन के लिए बहुत अधिक उपयोगकर्ता के अनुकूल विकल्प हैं, और शायद उपयोगकर्ता की स्क्रीन पर बल्कि मैत्रीपूर्ण तरीके से पॉप अप करेगा।


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