LINUX.ORG.RU
ФорумAdmin

VNC & SU


0

0

Есть проблема с запуском vnc сервера из init.d скрипта. 
Вручную из под root все запускается, но когда через сервисы пытаюсь запустить , Xvnc запускается но программы (которые должны стартовать из xstartup) не находят дисплей. Повторюсь, при ручном запуске все запускается отлично.
Дистриб opensuse 10.3 (на 10.2 работало отлично)

вот скрипт:
#! /bin/bash
USER=`echo ${1} | sed -e 's/..//'`
vnc_CONFIG=/home/$USER/.vnc/config
test -r $vnc_CONFIG || exit 6
. $vnc_CONFIG
rm /tmp/.X11-unix/X$SCREEN &>/dev/null
if test $AUTO = "1"; then
cd /home/$USER
sudo -u $USER bash -l -c "vncserver -geometry $GEOMETRY -depth $DEPTH :$SCREEN $XVNC_OPT"
fi

В /etc/init.d/vncserv следующее:
#!/bin/bash

vnc_BIN=/usr/bin/Xvnc
test -x $vnc_BIN || exit 5

. /etc/rc.status

rc_reset


startvnc()
{
cd /home
find . -type d -maxdepth 1 -exec /usr/bin/vncstart '{}' \; &>/dev/null
}


case "$1" in
    start)
        echo -n "Starting VNC servers "
        startvnc
        rc_status -v
        ;;
    stop)
        echo -n "Shutting down VNC servers "
        killall -TERM $vnc_BIN
        rc_status -v
        ;;
.......


Как правельно выполнить su/sudo что б нормально из init.d скрипта выполнить от другово пользователя запуск на сюзе 10.3?

Попробуй так -

cat /etc/init.d/xvncserver

#! /bin/sh
#
#
# /etc/init.d/xvncserver This script
# /usr/sbin/rcvncserver Root-Link to this Script
# /usr/X11R6/bin/vncserver Program
# /usr/bin/vncserver Program
#
# System startup script for vnc server
#
#
### BEGIN INIT INFO
# Provides: xvncserver
# Required-Start: $remote_fs $syslog $network xdm
# X-UnitedLinux-Should-Start: $network xdm
# Required-Stop: $remote_fs $syslog $network xdm
# X-UnitedLinux-Should-Stop: $network xdm
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Start vncserver for remote control
#
### END INIT INFO


# Check for missing binaries
# VNC_WRAPPER=/usr/X11R6/bin/vncserver
VNC_WRAPPER=/usr/bin/vncserver
test -x $VNC_WRAPPER || exit 5
# VNC_MASTER=/usr/X11R6/bin/Xvnc
VNC_MASTER=/usr/bin/Xvnc
test -x $VNC_MASTER || exit 5
VNC_CONFIG=/etc/sysconfig/vncservers
test -r $VNC_CONFIG || exit 5

# Shell functions sourced from /etc/rc.status:
# rc_check check and set local and overall rc status
# rc_status check and set local and overall rc status
# rc_status -v ditto but be verbose in local rc status
# rc_status -v -r ditto and clear the local rc status
# rc_failed set local and overall rc status to failed
# rc_failed <num> set local and overall rc status to <num><num>
# rc_reset clear local rc status (overall remains)
# rc_exit exit appropriate to overall rc status
# rc_active checks whether a service is activated by symlinks
. /etc/rc.status

# First reset status of this service
rc_reset

# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
#

VNCSERVERS=""
VNCARGS=""
[ -f $VNC_CONFIG ] && . $VNC_CONFIG

prog=$"VNC server"

case "$1" in
start)
for display in ${VNCSERVERS}
do
if test -a /home/${display##*:}/.vnc/passwd ; then
rm -fv /tmp/.X${display%%:*}-lock
rm -fv /tmp/.X11-unix/X${display%%:*}
echo -n "Starting $prog on: ${display} -- "
su ${display##*:} -l -c "cd && vncserver :${display%%:*} ${VNCARGS}"
[ $? -eq 0 ] && echo $rc_done_up || echo $rc_failed_up
else
echo -n "Vnc not initialised for user: ${display##*:}"
echo $rc_failed ;
fi
done
;;
stop)
for display in ${VNCSERVERS}
do
echo -n "Shutting down $prog: ${display} "
su ${display##*:} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1
[ $? -eq 0 ] && echo $rc_done || echo $rc_failed
done
;;
restart)
$0 stop
$0 start
rc_status
;;
status)
echo -n "Checking for service Vnc-Server "
## Check status with checkproc(8), if process is running
## checkproc will return with exit status 0.

# Return value is slightly different for the status command:
# 0 - service running
# 1 - service dead, but /var/run/ pid file exists
# 2 - service dead, but /var/lock/ lock file exists
# 3 - service not running

# NOTE: checkproc returns LSB compliant status values.
checkproc $VNC_MASTER
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
rc_exit

MiracleMan ★★★★★
()
Ответ на: комментарий от SilentLexx

Запускается только ICEWM все остаьное упорно продолжает ненахдить икасы (((

SilentLexx
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.