Bueno, después de haber hecho el articulo de “Chrooting SHOUTcast“, he decido publicar el script de inicio que uso para ejecutar el servicio, este se divide en dos archivos, uno sobre /etc/init.d/shoutcast y otro en /usr/sbin/shoutcast

/usr/sbin/shoutcast:

#!/bin/sh
#SHOUTcast Server 0.1 by RwZ
#For SHOUTcast Server

# Directorio de enjaulamiento
SHOUTJAIL=/shoutjail

# Directorio de configuración dentro de la jaula
SHOUTCONF=/etc/shoutcast

# Usuario no privilegiado con el que se ejecuta
SHOUTUSER=shoutcast

if [ "$UID" -ne 0 ];
then
        if [ "$UID" -ne 0 ];
        then
                echo "You must be root to run this script"
                exit 64
        fi
fi

check_pid ()
{
        if [ -e /var/run/sc_$1.pid ]
        then
                PID=`cat /var/run/sc_$1.pid`
        else
                PID=0
        fi
}

make_pid()
{
        PID=`pidof -s sc_serv`
        echo $PID > /var/run/sc_$1.pid
}

noconf ()
{
        echo ""
        echo "Wrong config file"
        echo "Please specify a filename"
        echo "-h|--help for usage"
        echo ""
        exit 68
}

start ()
{
        start-stop-daemon --start --background --nicelevel -20 \
        --exec=/usr/sbin/chroot -- $SHOUTJAIL /bin/sudo -b -u \
        shoutcast /bin/sc_serv $SHOUTCONF/$1.conf

        make_pid $1
        check_pid $1

        if [ $PID -ne 0 ]
        then
                echo ""
                echo "Shoutcast server running with conf: "$1
                echo ""
        else
                echo ""
                echo "ERROR Shoutcast server failed to start"
                echo ""
                exit 66
        fi
}

stop ()
{
        check_pid $1

        if [ $PID -ne 0 ]
        then
                kill $PID
                echo ""
                echo "Shoutcast server killed with conf: "$1" and PID: "$PID" Stopped."
                echo ""
                rm /var/run/sc_$1.pid
        else
                echo ""
                echo "ERROR Shoutcast server with conf: "$1" Not Running."
                echo ""
                exit 67
        fi
}

case $1 in
-h|--help)
        echo ""
        echo "Shoutcast script by RwZ"
        echo "       start [config file]"
        echo "       stop [config file]"
        echo "       restart [config file]"
        echo "       status [config file]"
        echo ""
        ;;
start)
        check_pid $2

        if [ $PID -ne 0 ]
        then
                echo ""
                echo "Shoutcast server is already running with PID: " $PID
                echo ""
                exit 70
        else
                start $2
        fi
        ;;
stop)
        stop $2
        ;;
restart)
        stop $2
        start $2
        ;;
status)
        check_pid $2

        if [ $PID -ne 0 ]
        then
                echo ""
                echo "Shoutcast server with config file: "$2" Running with PID: "$PID
                echo ""
        else
                echo ""
                echo "Shoutcast server with config file: "$2" Not Running"
                echo ""
        fi
        ;;

* )
        echo ""
        echo "Invalid Argument $1"
        echo "-h|--help for usage"
        echo ""
        exit 69
        ;;
esac
exit 0

/etc/init.d/shoutcast

#!/bin/sh
#SHOUTcast script 0.1 by RwZ
#For SHOUTcast server

#Path to ranchito script
SHOUTSCRIPT=/usr/sbin/shoutcast

case $1 in
        start)
                $SHOUTSCRIPT start config
        ;;
        stop)
                $SHOUTSCRIPT stop config
        ;;
        restart)
                $SHOUTSCRIPT restart config
        ;;
        status)
                $SHOUTSCRIPT status config
        ;;
        *)
                echo "Error"
        ;;
esac
exit 0

Para activarlo en una distribución Ubuntu

update-rc.d shoutcast defaults 99

Este script es muy basico, puede mejorarse, si ese es el caso y deseas compartirlo, no dudes en dejar un comentario.

Deja una Respuesta