स्टार्टअप पर स्वचालित रूप से VNC सर्वर शुरू करें


29

मैंने उबंटू डेस्कटॉप को उबंटू 9.10 वीपीएस सर्वर पर स्थापित किया और TightVNC का उपयोग करके सर्वर से कनेक्ट करने में सक्षम हूं। हालाँकि, इस VPS पर VNC सर्वर केवल SSH के माध्यम से लॉग इन करके और निम्नलिखित कमांड टाइप करके शुरू किया जा सकता है:

vncserver :1 -geometry 800x600 -depth 16 -pixelformat rgb565

यदि मैं स्टार्टअप पर या शेड्यूल कार्य के रूप में इस आदेश को चलाता हूं, तो यह प्रारंभ नहीं होगा। मेरे विकल्प क्या हैं?


क्या आपने यह पता लगाने की कोशिश की है कि यह शुरू क्यों नहीं होगा?
इग्नासियो वाज़क्वेज़-अब्राम्स

जवाबों:


27

मुझे " स्टार्टअप पर vnc लॉन्च vnc सर्वर " के लिए Google खोज कर ये निर्देश मिले ।

  1. VNC सर्वर स्थापित करें।
  2. vncserverपासवर्ड सेट करने के लिए पहली बार लॉन्च करें ।
  3. निम्न फ़ाइल को इस रूप में जोड़ें /etc/init.d/vncserver(अपनी पसंद के अनुसार USER, GEOMETRY, NAME, आदि को संशोधित करना सुनिश्चित करें)।
  4. sudo chmod +x /etc/init.d/vncserver
  5. sudo update-rc.d vncserver defaults

/etc/init.d/vncserver

#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          vncserver
# Required-Start:    networking
# Default-Start:     S
# Default-Stop:      0 6
### END INIT INFO

PATH="$PATH:/usr/X11R6/bin/"

# The Username:Group that will run VNC
export USER="mythtv"
#${RUNAS}

# The display that VNC will use
DISPLAY="1"

# Color depth (between 8 and 32)
DEPTH="16"

# The Desktop geometry to use.
#GEOMETRY="<WIDTH>x<HEIGHT>"
#GEOMETRY="800x600"
GEOMETRY="1024x768"
#GEOMETRY="1280x1024"

# The name that the VNC Desktop will have.
NAME="my-vnc-server"

OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"

. /lib/lsb/init-functions

case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;

stop)
log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;

restart)
$0 stop
$0 start
;;
esac

exit 0

मुझे निम्न त्रुटि आउटपुट मिल रहा है gist.github.com/anonymous/821d0ec525abb2fe42d8a070c846fb9e , मुझे विश्वास है कि आपके कॉन्फ़िगरेशन की आवश्यकताओं को कुछ रिक्त मानों के साथ अद्यतन किया गया है।
niftylettuce

मेरा काम करता है लेकिन एकमात्र मुद्दा यह है कि यह मेरे लिए पहली बार स्क्रिप्ट शुरू करने के लिए एक पासवर्ड दर्ज करने के लिए कहता है। क्योंकि बूट पर मैं इसे दर्ज नहीं कर सकता। मेरे द्वारा यह कैसे किया जा सकता है?

@droopie आप पासवर्ड के लिए एक समाधान मिल गया है?
बेन

12

यदि आप अधिक गतिशील कॉन्फ़िगरेशन और कई उपयोगकर्ताओं के लिए कनेक्ट करने की क्षमता चाहते हैं तो ऐसा करने का एक बेहतर तरीका है। रूट के रूप में फ़ाइल बनाएँ (और निर्देशिका अगर यह मौजूद नहीं है) / etc / sysconfig / vncservers अर्थात:

mkdir -p /etc/vncserver
touch /etc/vncserver/vncservers.conf

प्रत्येक उपयोगकर्ता के लिए आवश्यक सर्वर जोड़ें, जैसा कि आपने अभी बनाया vncservers.conf फ़ाइल में निम्नलिखित कुछ जोड़कर:

VNCSERVERS="1:justin 2:bob"
VNCSERVERARGS[1]="-geometry 1920x1080 -depth 24"
VNCSERVERARGS[2]="-geometry 800x600 -depth 8"

अगले एक खाली init स्क्रिप्ट बनाएं और इसे निष्पादन योग्य बनाएं:

touch /etc/init.d/vncserver
chmod +x /etc/init.d/vncserver

निम्नलिखित को /etc/init.d/vncserver में जोड़ें:

#!/bin/bash

unset VNCSERVERARGS
VNCSERVERS=""
[ -f /etc/vncserver/vncservers.conf ] && . /etc/vncserver/vncservers.conf
prog=$"VNC server"

start() {
        . /lib/lsb/init-functions
        REQ_USER=$2
        echo -n $"Starting $prog: "
        ulimit -S -c 0 >/dev/null 2>&1
        RETVAL=0
        for display in ${VNCSERVERS}
        do
                export USER="${display##*:}"
                if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
                        echo -n "${display} "
                        unset BASH_ENV ENV
                        DISP="${display%%:*}"
                        export VNCUSERARGS="${VNCSERVERARGS[${DISP}]}"
                        su ${USER} -c "cd ~${USER} && [ -f .vnc/passwd ] && vncserver :${DISP} ${VNCUSERARGS}"
                fi
        done
}

stop() {
        . /lib/lsb/init-functions
        REQ_USER=$2
        echo -n $"Shutting down VNCServer: "
        for display in ${VNCSERVERS}
        do
                export USER="${display##*:}"
                if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
                        echo -n "${display} "
                        unset BASH_ENV ENV
                        export USER="${display##*:}"
                        su ${USER} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1
                fi
        done
        echo -e "\n"
        echo "VNCServer Stopped"
}

case "$1" in
start)
start $@
;;
stop)
stop $@
;;
restart|reload)
stop $@
sleep 3
start $@
;;
condrestart)
if [ -f /var/lock/subsys/vncserver ]; then
stop $@
sleep 3
start $@
fi
;;
status)
status Xvnc
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1
esac

जैसा कि स्टीफन ने अपने उत्तर में उल्लेख किया है कि आपको प्रत्येक उपयोगकर्ता के रूप में लॉग ऑन के रूप में vncserver AT LEAST ONCE चलाना होगा। मैंने उसे कैप में रखा क्योंकि अगर आप उस स्टेप को छोड़ देते हैं तो उसमें से कोई भी काम नहीं करेगा। तो जड़ के रूप में आप कर सकते हैं:

su justin -c vncserver
su bob -c vncserver

यह उपयुक्त स्टार्टअप स्क्रिप्ट के साथ प्रत्येक उपयोगकर्ता के घर में एक .vnc निर्देशिका बनाएगा।

अंत में, निम्नलिखित करें:

update-rc.d vncserver defaults 99

अब आप या तो रिबूट कर सकते हैं या टाइप करके मैन्युअल रूप से सेवा शुरू कर सकते हैं:

service vncserver start

1
यह वास्तव में मेरे लिए काम करता है, लेकिन केवल एक चीज यह है कि यह स्वचालित रूप से इसे अपने आप शुरू करता है मुझे लगता है क्योंकि यह उपयोगकर्ता पासवर्ड का अनुरोध कर सकता है। चूँकि इसकी स्वचालित रूप से शुरुआत हो चुकी है, इसलिए मैं इसे इसके लिए नहीं कहता। अगर मैं स्क्रिप्ट को मैन्युअल रूप से लॉन्च करता हूं, तो यह मेरे उपयोगकर्ता पासवर्ड के लिए पूछता है। मैं इसे कैसे ठीक करूं?
बजे

1

मैं उन दोस्तों के उबंटू तक पहुंचता हूं, जो मुझे स्थापित करने या कॉन्फ़िगर करने या उन्हें कुछ सिखाने के लिए मदद करते हैं।
जैसा कि मुझे मॉडेम के माध्यम से इंटरनेट से पहुंच की आवश्यकता है, मैं विनो का उपयोग करता हूं।
पहुँच के दौरान सभी साझाकरण और सुरक्षा विकल्प चालू होते हैं।
मैं नहीं चाहता कि विनो-सर्वर हर समय सक्रिय रहे: यह ठीक है कि यह ऑटोस्टार्ट नहीं है।
मेरे पास कोई सिस्टम> रिमोट डेस्कटॉप मेनू नहीं था।
मैंने /usr/share/applications/vino-preferences.desktop को निम्नानुसार संपादित किया:

# OnlyShowIn=Unity;
Exec=bash -c 'vino-preferences;/usr/lib/vino/vino-server&zenity --info --text="Accès par Internet: `curl http://ipecho.net/plain`:5900"'

काम से पहले, मैं अपने दोस्तों को दूरस्थ डेस्कटॉप प्राथमिकताएं चलाने और साझा करने की अनुमति ... पर टिक करने के लिए कहता हूं।
वरीयताएँ बाहर निकलने पर, vino-server शुरू होता है और वे मुझे उपयोग करने के लिए IP पता बताते हैं।
जब काम पूरा हो जाता है, तो वे शेयरिंग फिर से टिक करने के लिए वरीयता चलाते हैं ... बंद।
वरीयताएँ बाहर निकलने पर, विनो-सर्वर बंद हो जाता है और बंद होने की स्थिति में भी शुरू हो जाता है।
मुझे यह प्रक्रिया बहुत सुविधाजनक और साथ ही उपयोगकर्ता के लिए सबसे सुरक्षित लगती है।

पुनश्च: डेवलपर्स स्थानीय रूप से (उपयोगकर्ता सत्र के भीतर) चलने के लिए अपने कार्यक्रमों को प्राथमिकता देते हैं क्योंकि बग उस तरह से वैश्विक प्रणाली को प्रभावित नहीं कर सकता है।


0

Ubuntu 12.1 में मैं सिस्टम सेटिंग्स-> उपयोगकर्ताओं में जाने में सक्षम था और एक उपयोगकर्ता का चयन करके "स्वचालित लॉगिन-> चालू" सेट कर सकता था

तब मैं बॉक्स में ही लॉग इन किए बिना प्राप्त करने के लिए तंग वीएनएनसी का उपयोग करने में सक्षम था।

हेडलेस उबंटू लिनक्स बॉक्स के लिए अच्छी तरह से काम किया


मैं क्या इकट्ठा कर सकता हूं, यह सवाल स्टार्टअप पर vncserver को पावर करने के बारे में है, न कि यूजर लॉगिन पर।
रोमन लुसट्रिक

0

मेरा सुझाव है कि अगर आप विभिन्न vnc के लिए अलग-अलग उपयोगकर्ताओं के लिए कई vncserver_john, vncserver_bill, ... फाइल बनाकर, स्टीफन जेनिंग्स समाधान का उपयोग करने का सुझाव देते हैं। यह आपको उन्हें अलग से शुरू / बंद करने की अनुमति देता है। निश्चित रूप से, अच्छा प्रोग्रामिंग अभ्यास सभी उपयोगकर्ताओं को एक फाइल में आम कोड डालने का सुझाव देता है, और इसे अन्य सभी से सोर्स करता है।

मेरे पास एक सर्वर के लिए "विरासत में मिली" जिम्मेदारी है जहां कई सहकर्मी कुछ वैज्ञानिक प्रोग्रामिंग और डेटा मूल्यांकन करते हैं, हर कोई एक अलग vnc के साथ। सर्वर वास्तव में वर्षों से लगातार और स्थिर चलता है, और उपयोगकर्ता अपनी खुली खिड़कियों को बचाने के लिए आलसी हो जाते हैं। हालांकि, एकल vncservers या X11 सर्वर कभी-कभी अटक जाते हैं, और एक सर्वर को फिर से चलाने के लिए सभी उपयोगकर्ताओं को बंद करना एक बड़ा उपद्रव है।

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