Init Script für MLDonkey

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
kenny
Beiträge: 39
Registriert: 10.01.2002 15:24:54

Init Script für MLDonkey

Beitrag von kenny » 06.09.2005 00:42:38

Hallo Leute,

ich bin gerade dabei ein Debian/Ubuntu Paket von MLDonkey zu bauen. Beim erstellen des Init Scripts bin ich auf ein Problem gestoßen.
Init Scripte werden beim starten ja als root ausgeführt. Da liegt auch das Problem. Ich starte den MLDonkey mit dem start-stop-daemon folgendermaßen

Code: Alles auswählen

start-stop-daemon --start --quiet --background --exec /usr/bin/mldonkey
Seitr der 2.6.1er Version von MLDonkey werden die Konfig Dateien unter $HOME/.mldonkey/ gespeichert. Da aber der mldonkey also root gestartet wird, sucht er seine Konfig Dateien unter /root/.mldonkey/ Das will ja bestimmt niemand :-)

Also müsste ich unter /etc/default/ eine mldonkey Konfig Datei anlegen lassen mit Variablen für username und den Pfad zu den Konfig dateien. Diese, der User dann editiert damit er das Script nutzen kann. Die Variablen würden dann vor dem starten des Donkey natürlich ausgelesen.

Damit könnte man den Donkey so starten

Code: Alles auswählen

export MLDONKEY_DIR="Pfad zur den ini Dateien"
start-stop-daemon --start --quiet --background --chuid $USER --exec /usr/bin/mldonkey
Das ist das erste mal das ich mich mit so was beschäftige. Jetzt wollte ich mal wissen was ihr von der Lösung haltet oder kann man dass auf eine elegantere Art lösen?

Benutzeravatar
Raoul
Beiträge: 1435
Registriert: 20.05.2003 00:16:35
Lizenz eigener Beiträge: neue BSD Lizenz
Kontaktdaten:

Beitrag von Raoul » 07.09.2005 03:47:31

Wie wäre es, wenn Du Dir mal das initscript aus dem mldonkey-server Paket aus unstable anschaust? Das läuft wenn ich micht Recht entsinne mit einem chroot, in den ein eigener mldonkey-user eingesperrt ist.

Überhaupt: Gibt es irgendeinen Grund, Dir nicht einfach das Mldonkey-Paket für Dein Ubuntu oder was auch immer nachbauen, oder, viel einfacher: stupf installieren, sollte gehen.

Raoul

Code: Alles auswählen

grep -ir fuck /usr/src/linux

kenny
Beiträge: 39
Registriert: 10.01.2002 15:24:54

Beitrag von kenny » 10.09.2005 11:55:54

Raoul hat geschrieben:Wie wäre es, wenn Du Dir mal das initscript aus dem mldonkey-server Paket aus unstable anschaust? Das läuft wenn ich micht Recht entsinne mit einem chroot, in den ein eigener mldonkey-user eingesperrt ist.l
Das sollte ich vielleicht mal machen.
Raoul hat geschrieben:Überhaupt: Gibt es irgendeinen Grund, Dir nicht einfach das Mldonkey-Paket für Dein Ubuntu oder was auch immer nachbauen, oder, viel einfacher: stupf installieren, sollte gehen.
Das Paket baue ich um es im mldonkey.org Forum für andere User zu Verfügung zu stellen. Bis jetzt hab ich nur ein Paket gebaut wo nur die Binarie drin ist. Jetzt wollte ich es um ein init Script erweitern.

Benutzeravatar
Chrissss
Beiträge: 176
Registriert: 05.04.2004 00:23:48

Beitrag von Chrissss » 10.09.2005 12:21:40

Here's mine

Code: Alles auswählen

#!/bin/bash

MLNET_DIR="/home/mldonkey/bin"
MLNET_BIN="mlnet"
MLNET_USER="mldonkey"
NICE_PRIO=19

nc=/bin/nc         # perhaps named netcat on your system 
awk=/usr/bin/awk

# fast settings
dnload_rate_fast=300
upload_rate_fast=15
connections_fast=450
# slow settings
dnload_rate_slow=200
upload_rate_slow=10
connections_slow=300

case "$1" in

start)
        echo "Starting mldonkey"
        cd $MLNET_DIR
        sudo -u $MLNET_USER $MLNET_DIR/$MLNET_BIN > /dev/null 2>&1 &
        renice $NICE_PRIO $MLNET_BIN 
        ;;

stop)
		echo "Stopping mldonkey"
		cd $MLNET_DIR
		sh -c "$nc localhost 4000 > /dev/null << STOPHERE
			close_fds
			kill 
		STOPHERE"
        ;;

status)
        PID=`pidof $MLNET_BIN`
        if [ $PID ];then
            if [ `ps -p $PID | wc -l` -eq 2 ]; then
                echo "$MLNET_BIN (pid $PID) running..."
            else
                echo "Stale PID"
            fi
        else
            echo "$MLNET_BIN is stopped"
        fi
        ;;

fast)
        sh -c "$nc localhost 4000 > /dev/null << STOPHERE
            set max_hard_download_rate $dnload_rate_fast
            set max_hard_upload_rate $upload_rate_fast
            set max_opened_connections $connections_fast
            q
        STOPHERE"

        echo "Setting $MLNET_BIN to fast settings (DL:$dnload_rate_fast UL:$upload_rate_fast #:$connections_fast)"
        ;;

slow)
        sh -c "$nc localhost 4000 > /dev/null << STOPHERE
            set max_hard_download_rate $dnload_rate_slow
            set max_hard_upload_rate $upload_rate_slow
            set max_opened_connections $connections_slow
            q
        STOPHERE"

        echo "Setting $MLNET_BIN to slow settings (DL:$dnload_rate_slow UL:$upload_rate_slow #:$connections_slow)"
        ;;
        
  

reshare)
       sh -c "$nc localhost 4000 > /dev/null << STOPHERE
           close_all_sockets
           reshare
           q
       STOPHERE"
       
       echo "Resharing and refreshing $MLNET_BIN"
       ;;

*)
        echo "Usage: `basename $0` {start|stop|status|fast|slow|reshare|restart}" >&2
        exit 64
        ;;

esac

exit 0
CU
Chrissss

Antworten