#!/bin/bash # # chkconfig: - 91 35 # description: Starts and stops vncserver. \ # used to provide remote X administration services. WITHOUT_RC_COMPAT=1 # Source function library. . /etc/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 PIDFILE=/var/run/vncserver.pid LOCKFILE=/var/lock/subsys/vncserver RETVAL=0 unset VNCSERVERARGS VNCSERVERS="" [ -f /etc/sysconfig/vncservers ] && . /etc/sysconfig/vncservers prog=$"VNC server" start() { echo -n $"Starting $prog: " ulimit -S -c 0 >/dev/null 2>&1 RETVAL=0 if [ ! -d /tmp/.X11-unix ] then mkdir -m 1777 /tmp/.X11-unix || : #restorecon /tmp/.X11-unix || : fi for display in ${VNCSERVERS} do echo -n "${display} " unset BASH_ENV ENV DISP="${display%%:*}" export USER="${display##*:}" export VNCUSERARGS="${VNCSERVERARGS[${DISP}]}" #runuser -l ${USER} -c "cd ~${USER} && [ -f .vnc/passwd ] && vncserver :${DISP} ${VNCUSERARGS}" su -l ${USER} -c "cd ~${USER} && [ -f .vnc/passwd ] && vncserver :${DISP} ${VNCUSERARGS}" RETVAL=$? [ "$RETVAL" -ne 0 ] && break done [ "$RETVAL" -eq 0 ] && success $"vncserver startup" || \ failure $"vncserver start" echo [ "$RETVAL" -eq 0 ] && touch $LOCKFILE } stop() { echo -n $"Shutting down $prog: " for display in ${VNCSERVERS} do echo -n "${display} " unset BASH_ENV ENV export USER="${display##*:}" #runuser ${USER} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1 su ${USER} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1 done RETVAL=$? [ "$RETVAL" -eq 0 ] && success $"vncserver shutdown" || \ failure $"vncserver shutdown" echo [ "$RETVAL" -eq 0 ] && rm -f $LOCKFILE } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart|reload) stop sleep 3 start ;; condrestart) if [ -f $LOCKFILE ]; then stop sleep 3 start fi ;; status) status Xvnc ;; *) echo $"Usage: $0 {start|stop|restart|condrestart|status}" exit 1 esac