MLDonkey Start Script

Mad MAX85

Cadet 4th Year
Dabei seit
Nov. 2004
Beiträge
73
Hallo.

Ich brächte mal ein Script was MLDonkey Stopt wenn ein bestimmter PC im netzwerk online ist, und es wieder Startet wenn er wieder offline ist....

Einen Ansatz habe ich schon...
Code:
#!/bin/sh 
# 
# MLDonkey start/stop script - (c) 2003 Lucas Peetz Dulley
#
# This is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# DESCRIPTION:
#	An useful and simple(?) script for starting, stopping and restarting
#	MLDonkey as a daemon.
#
# REQUIRES:
#	- bash, ps, wc, grep, awk and netcat.
#
# INSTALL: 
#	- become root
#	- copy this file to /etc/init.d/
#	- make the file executable "chmod +x /etc/init.d/MLDonkey"
#	- create links in the rc.* (in Debian: "update-rc.d MLDonkey defaults")
#
# USAGE: 
#	- run "/etc/init.d/MLDonkey start"	(to start)
#	- run "/etc/init.d/MLDonkey stop"	(to stop)
#	- run "/etc/init.d/MLDonkey restart"	(to restart)
#

## BEGIN USER CONFIGURATION ##
#
# Set running directory and username (not root). 
	MLDONKEYDIR=/full/path/to/mldonkey/directory/
	USERNAME=username
#
# Set Netcat's (TCP/IP swiss army knife) filename - usually "nc" or "netcat"
	NETCAT=nc
#
## END USER CONFIGURATION ##

status() {
PID=`ps ax -o "pid user command" | grep -E [[:space:]]\{3\}./mlnet | awk {'print $1'}`

if [ $PID ];then
        if [ `ps -p $PID | wc -l` -eq 2 ]; then
                echo "mldonkey (pid $PID) running..."
                return 1
        else
                echo "Stale PID"
        fi
fi
echo "mldonkey is stopped"
return 0
}

start() {
# see if there is a mldonkey running
status &> /dev/null
if [ $? = 0 ]; then
	echo "Starting mldonkey:"
	cd $MLDONKEYDIR
	# Remove old servers
	rm -rf servers.ini*
	# Remove tmp files
	rm -rf *.tmp
	# Run MLDonkey
	su $USERNAME -c "nice -+19 ./mlnet -daemon &> /dev/null"
fi
return 0
}

stop() {
status &> /dev/null
if [ $? = 1 ]; then
	echo "Stopping mldonkey:"
	cd $MLDONKEYDIR
	bash -c "$NETCAT 127.0.0.1 4000 <<STOPHERE
		close_fds
		kill 
		STOPHERE" &> /dev/null
	sleep 10
	return 0
fi
return 1
}

case "$1" in
   'status')
      status ;;
   'start')
      start ;;
   'stop')
      stop ;;
   'restart')
      stop 
      start ;;
   *)
      echo "usage $0 start|stop|restart" 
      exit 1 ;;
esac

exit $?
##-- eof
P.s. Ich habs nicht so extrem mit Linux... bin noch ziemlicher Anfänger...

MfG
Mad MAX85
 
Zuletzt von einem Moderator bearbeitet:

Mad MAX85

Cadet 4th Year
Ersteller dieses Themas
Dabei seit
Nov. 2004
Beiträge
73
Keiner eine Idee??? :(
Also die Version in unter Windows ist wie folgt:

Code:
@echo off
TITLE eMule Verbindungstest
SET user1=111.111.111.111
SET user2=111.111.111.112
SET prozessname=emule.exe
SET prozesspfad="C:\Programme\eMule\emule.exe"
SET waittime=30000

	
:Verbindungstest
echo.
echo Verbindungstest
echo =====================================
ping -n 1 %user1% | find "TTL=" > nul
echo.
echo Ergebnis
echo -------------------------------------
echo Errorlevel: %errorlevel%
echo.
goto %errorlevel%

:0
:: Verbindung OK
echo - PC 1 online!!!
echo - %prozessname% wird beendet.
TASKLIST | find "%prozessname%" 
IF errorlevel 1 goto :Loop
taskkill /F /IM %prozessname% > nul
goto :Loop

:1
::Keine Verbindung
echo - PC 1 offline.
echo - Verbindung zu PC 2 wird getestet...
ping -n 1 %user2% | find "TTL=" > nul
IF NOT errorlevel 1 goto :Nonline
echo - PC 2 offline.
echo - %prozessname% wird gestartet.
TASKLIST | find "%prozessname%" > nul
IF NOT errorlevel 1 goto :Loop
Start "eDonkey" %prozesspfad%
goto loop

:Nonline
echo - PC 2 Online!!! 
echo - %prozessname% wird beendet.
TASKLIST | find "%prozessname%" 
IF errorlevel 1 goto :Loop
taskkill /F /IM %prozessname% > nul

:Loop
:: Warteschleife
:: "1.1.1.1" durch eine im Netzwerk nicht vorhandene IP ersetzen
:: "30000" durch Zeit in ms ersetzen (30000 sind 30 sec)
echo -------------------------------------
echo.
echo Warteschleife 30 sek
time /t
PING 192.168.1.2 -n 1 -w %waittime% > nul
cls
goto Verbindungstest
 
Zuletzt bearbeitet:

Kampfgnom

Lt. Commander
Dabei seit
Jan. 2005
Beiträge
1.075
ich hab ein mehr oder weniger tolles script bei mir zu hause. leider bin ich grad in münchen, morgen abend sollte ich dir posten können. wenn sich das bis dahin nicht erledigt haben sollte.
so sit back relay and enyoy the view ;)

mfg
 

Mad MAX85

Cadet 4th Year
Ersteller dieses Themas
Dabei seit
Nov. 2004
Beiträge
73
Wunderbar... klasse... danke schonmal... :)
 

Mad MAX85

Cadet 4th Year
Ersteller dieses Themas
Dabei seit
Nov. 2004
Beiträge
73
Schon zurück aus München? :)
 

Kampfgnom

Lt. Commander
Dabei seit
Jan. 2005
Beiträge
1.075
Code:
#!/bin/sh

DAEMON=/usr/local/bin/amuled

case "$1" in
  start)
        echo -n "Starting aMule daemon:"

        echo -n " amuled"
        if start-stop-daemon --quiet --stop --signal 0 --exec $DAEMON --name amuled
        then
                echo " already running."
                exit
        fi
        /sbin/start-stop-daemon --start --quiet --exec $DAEMON -- -f>/dev/null
        echo "."
        ;;
  stop)
        echo -n "Stopping aMule daemon:"
        echo -n " amuled"
        if start-stop-daemon --quiet --stop --signal 0 --exec $DAEMON --name amuled
        then
                start-stop-daemon --quiet --stop --exec $DAEMON --name amuled
                while start-stop-daemon --quiet --stop --signal 0 --exec $DAEMON --name amuled 2>/dev/null; do sleep 1; done
                echo "."
        else
                echo " not running.";
        fi

        ;;
  force-reload|restart)
        $0 stop
        $0 start
        ;;
  *)
        echo "Usage: /etc/init.d/amuled {start|stop|restart|force-reload}"
        exit 1
esac

exit 0
Das ganze ist zwar amule, aber ich denke mal das solltest du selber anpassen können oder?
 

Mad MAX85

Cadet 4th Year
Ersteller dieses Themas
Dabei seit
Nov. 2004
Beiträge
73
Hmm... für MLDonkey umschreiben ist nicht das Problem, aber ich sehe da nirgends das er ne IP aufruft, bzw. abfragt....
Mein Gedanke war ja das er Das Programm startet wenn die zwei anderen PC im Netz aus sind, und automatisch beendet wenn sie eingeschaltet werden, und das halt ständig abfragt...
 

Kampfgnom

Lt. Commander
Dabei seit
Jan. 2005
Beiträge
1.075
oh sry, ich hab ganz einfach deine script nicht gelesen. dumm von mir. aber warum willst du das überhaupt? ein donkey-client läuft mit abstand am besten wenn er durchläuft.
und fernsteuern (sogar mit GUI! ;) ) kann man mldonkey jawohl nahezu perfekt.
 

Mad MAX85

Cadet 4th Year
Ersteller dieses Themas
Dabei seit
Nov. 2004
Beiträge
73
Ja, ist mir alles bewusst... aber es gibt ein Problem.... wenn MLDonkey zieht macht er die Leitung ganz schön dicht... mein Nachbar ist mit WLAN über unseren Router im Netz... wenn MLDonkey jetzt richtig am arbeiten ist, wirds mit dem Surfen arg langsam... das kotzt ihn etwas an... da er aber nur selten am PC ist kann ich nicht immer selber gucken wann... daher das Script... wenn er online ist schaltet sich MLD aus und wenn er den PC wieder abschaltet geht MLD wieder an... So die Idee... aber mangels Kenntnis von Linux u.s.w. krig ich das nicht selber geschrieben...

Mit eMule unter windows hat es immer Wunderbar geklappt...
 
Top