#!/bin/sh # xrdp control script # Written : 1-13-2006 - Mark Balliet - posicat@pobox.com # maintaned by Jay Sorg # chkconfig: 2345 11 89 # description: starts xrdp XRDP=xrdp SESMAN=sesman STARTWM=/etc/X11/xdm/Xsession XRDP_DIR=/usr/lib/xrdp #XRDP_DIR=. LOG=/dev/null cd $XRDP_DIR # BUG: sesman generate core file when stopped ulimit -Sc 0 test -x $XRDP_DIR/$XRDP || echo "$XRDP is not executable" test -x $XRDP_DIR/$SESMAN || echo "$SESMAN is not executable" if ! test -x $STARTWM; then echo "$STARTWM is not executable" exit 0 fi xrdp_start() { echo -n "Starting: xrdp and sesman ..." $XRDP_DIR/$XRDP >> $LOG $XRDP_DIR/$SESMAN >> $LOG echo "." sleep 1 return 0; } xrdp_debugstart() { echo -n "Debug starting: xrdp and sesman ..." $XRDP_DIR/$SESMAN >> $LOG $XRDP_DIR/$XRDP -nodaemon return 0; } xrdp_stop() { echo -n "Stopping: xrdp and sesman . . " $XRDP_DIR/$XRDP --kill >> $LOG $XRDP_DIR/$SESMAN --kill >> $LOG echo "." sleep 1 # BUG: sesman don`t stopped!!!! # is_sesman_running && killall -9 $XRDP_DIR/$SESMAN is_xrdp_running && killall -9 $XRDP_DIR/$XRDP # sometime Special Linux fails with full path is_sesman_running && killall -9 $SESMAN killall -9 $XRDP_DIR/sessvc killall -9 Xvnc return 0; } is_xrdp_running() { ps ax --noheading | grep -v 'grep' | grep -q -i $XRDP_DIR/$XRDP && return 0 || return 1 } is_sesman_running() { ps ax --noheading | grep -v 'grep' | grep -q -i $XRDP_DIR/$SESMAN && return 0 || return 1 } check_up() { # Cleanup : If sesman isn't running, but the pid exists, erase it. is_sesman_running || rm -f /var/run/sesman.pid 2>/dev/null # Cleanup : If xrdp isn't running, but the pid exists, erase it. is_xrdp_running || rm -f /var/run/xrdp.pid 2>/dev/null return 0; } case "$1" in start) check_up is_xrdp_running && echo "xrdp is already loaded" is_sesman_running && echo "sesman is already loaded" xrdp_start ;; debug) check_up is_xrdp_running && echo "xrdp is already loaded" is_sesman_running && echo "sesman is already loaded" xrdp_debugstart ;; stop|condstop) check_up is_xrdp_running || echo "xrdp is not loaded." is_sesman_running || echo "sesman is not loaded." xrdp_stop ;; condrestart|restart|condreload) check_up echo "Restarting xrdp ..." xrdp_stop is_xrdp_running while [ true ]; do check_up sleep 1 is_xrdp_running || break done xrdp_start ;; status) is_sesman_running && echo "SESMAN running" || echo "SESMAN NOT running" is_xrdp_running && echo "XRDP running" || echo "XRDP NOT running" ;; *) echo "Usage: service xrdp {start|stop|restart|condrestart|condstop}" exit 1 esac exit 0