PyLoad: Unterschied zwischen den Versionen

Aus
Zeile 107: Zeile 107:
  stop() {
  stop() {
         kill `cat /var/run/pyload.pid`
         kill `cat /var/run/pyload.pid`
}
#
update() {
        stop
        sleep 5
        cd $INSTALL_DIR
        echo "incomplete"
  }
  }
  #
  #
Zeile 115: Zeile 122:
         stop)
         stop)
                 stop
                 stop
                ;;
        update)
                update
                 ;;
                 ;;
         restart)
         restart)
Zeile 122: Zeile 132:
                 ;;
                 ;;
         *)
         *)
                 echo "Usage: $0 (start|stop|restart)"
                 echo "Usage: $0 (start|stop|restart|update)"
                 exit 1
                 exit 1
                 ;;
                 ;;

Version vom 20. Juli 2011, 04:51 Uhr

Allgemeine Informationen

pyLoad ist ein Download-Manager für One-Click-Hoster.

Voraussetzungen

  • Zugriff auf das NAS per Kommandozeile muss aktiviert sein
  • IPKG muss installiert sein, am besten mit der erweiterten Startup/Shutdown Variante

Installation

Die nötigen Installationsschritte sind einem Beitrag im englischen QNAP-Forum entnommen.

Zugriff auf das NAS per Kommandozeile

Benötigte Tools installieren

ipkg install screen nano wget unzip unrar

Python und Abhängigkeiten installieren

ipkg install python py25-crypto py25-curl libcurl py25-openssl py25-django py25-pil tesseract-ocr tesseract-ocr-lang-eng ossp-js

pyLoad herunterladen

0.4.6 ist die aktuelle Version (Stand 18.06.11)

cd /opt
wget http://get.pyload.org/get/src/0.4.6/
unzip pyload-src-v0.4.6.zip
rm pyload-src-v0.4.6.zip
cd pyload/

Konfiguration

Das Konfigurationsverzeichnis (hier werden auch die Downloads gespeichert) sollte geändert werden, z.B. /volume1/pyload

cd module/config/
echo "/volume1/pyload" >> configdir

pyLoad ausführbar machen

chmod +x /opt/pyload/pyLoadCore.py

pyLoad starten

python /opt/pyload/pyLoadCore.py

Beim ersten Aufruf erscheint der Konfigurations-Assistent, die Einrichtung ist relativ selbsterklärend und gut beschrieben.

Eine möglichkeit PyLoad starten zu lassen ist mit screen pyLoad im Hintergrund laufen lassen

screen -dmS python /opt/pyload/pyLoadCore.py

Dies verhindert den Abbruch des Programms beim Beenden der Kommandozeile


Reconnect

Um Pyload effektiv nutzen zu können, ist ein automatischer reconnect sinnvoll.

Dazu wird eine Datei namens reconnect.sh erstellt, welche am besten mit unter /volume1/@optware/pyload/ abgespeichert wird. In der Weboberfläche unter Einstellungen/General/Reconnect unter Method den gesamten Pfad zur Datei also /volume1/@optware/pyload/reconnect.sh eintragen.

Die reconnect.sh am besten unter vi erstellen, da beim Erstellen unter Windows meist zusätzliche Steuerzeichen erstellt werden, die das Skript nutzlos machen.

Da es für die Vielzahl von Routern unterschiedliche Verfahren gibt, einen Reconnect zu erzwingen, dient dieses hier nur als Beispiel. Es wäre schön, wenn noch mehr User ihre reconnect.sh posten würden um eine bessere Übersicht zu erreichen.

Code für die reconnect.sh für einen:

T-Com Speedport 500 V

wget --delete-after http://192.168.2.1/cgi-bin/disconnect.exe
sleep 5
wget --delete-after http://192.168.2.1/cgi-bin/connect.exe
sleep 5

AVM Fritz.Box via UPNP

#!/opt/bin
curl "http://fritz.box:49000/upnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination" -d "
<?xml version='1.0' encoding='utf-8'?> 
<s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'>
<s:Body> <u:ForceTermination xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> 
</s:Body> </s:Envelope>"

Update

Vor dem Update einer bestehenden Installation muss pyload beendet werden:

/etc/init.d/S99pyload stop

Dann kann man zur Sicherheit die alte Version kopieren, zum Beispiel:

cp -R /opt/pyload /opt/pyload.045
cp -R /volume1/pyload /volume1/pyload.045

Als nächstes wird die neue Version geholt und einfach drüber installiert:

cd /opt
wget http://get.pyload.org/get/src/0.4.6/
unzip pyload-src-v0.4.6.zip [bei Nachfrage 'overwrite all' auswählen]

Fertig! Jetzt kann die neue Version gestartet werden:

/etc/init.d/S99pyload start

Automatisches Startup/Shutdown

Um dafür zu sorgen, dass beim Startup und Shutdown der DS PyLoad automatisch gestartet und gestoppt wird, sollte IPKG in der erweiterten Variante ohne Mount Bind und mit erneuertem Startup/Shutdown Script installiert worden sein. Vor der weiteren Konfiguration für das Start / Stop Script, sollte dafür gesorgt werden, daß PaLoad nicht mehr gestartet ist.

Danach legt man nachfolgendes Script unter /opt/etc/init.d/S99pyload ab. Ausführbar machen mit chmod +x /opt/etc/init.d/S99pyload nicht vergessen! Jetzt wird getestet, ob sich PyLoad mittels /opt/etc/init.d/S99pyload start sauber starten lässt. Sobald PyLoad sauber gestart werden kann, testet man auch gleich noch mittels /opt/etc/init.d/S99pyload stop, ob PyLoad auch wieder sauber beendet wird. Nach dem Stop darf per ps | grep python kein Prozess mehr sichtbar sein.

#!/bin/sh
#
# Start / Stop Script for PyLoad http://localhost:8000
#
prefix="/opt"
PATH=${prefix}/bin:${prefix}/sbin:/sbin:/bin:/usr/sbin:/usr/bin
NAME="PyLoad"
DAEMON="python /opt/pyload/pyLoadCore.py --daemon"
#Fuer startup debugging:
#DAEMON="screen -dmS python /opt/pyload/pyLoadCore.py"
DAEMON_OPTS=""
#
#
start() {
       echo "Starting Service: $NAME"
       $DAEMON $DAEMON_OPTS | awk '{print $3}' >/var/run/pyload.pid
}
#
stop() {
       kill `cat /var/run/pyload.pid`
}
#
update() {
       stop
       sleep 5
       cd $INSTALL_DIR
       echo "incomplete"
}
#
case "$1" in
       start)
               start
               ;;
       stop)
               stop
               ;;
       update)
               update
               ;;
       restart)
               stop
               sleep 4
               start
               ;;
       *)
               echo "Usage: $0 (start|stop|restart|update)"
               exit 1
               ;;
esac
#
# End

Wenn das Script aktiv ist, sollte man nicht vergessen, dass das Script die PID des PyLoad Prozesses speichert, um anhand dieser PID beim Stoppen den PyLoad Prozess zu beenden. Wenn jetzt also jemand "von Hand" die PyLoad Prozesse Stopt und Startet, dann kann das Script nicht mehr sauber funktionieren. Daher, ab sofort am besten nur noch das Pyload Start/Stop Script für das Starten und Stoppen von PyLoad verwenden. Für Tests, wird am besten das Script mit "stop" aufgerufen, dann getestet und alle PyLoad Prozesse wieder beendet, um dann mit dem Script und dem "start" Parameter alles wieder sauber zu starten.

Warum ist das Stoppen von PyLoad beim Shutdown so wichtig? Weil ansonsten die DS nicht sauber heruntergefahren werden kann, bzw. unter umständen sogar hängen bleibt und sich nicht abschalten kann. Wer also beim abschliessenden Test feststellen sollte, daß die DS nicht sauber herunterfährt, der hat etwas falsch gemacht und sollte noch mal sorgfälltig alle Schritte prüfen und niemals vergessen jeden Schritt auch noch einmal zu testen.

Ein alternatives Startup-Script mit Update (Debug, Logfileausgabe und besserer stop/restart-Funktionalität) -Funktion findet ihr unter http://pastebin.com/J9mdXURL

Für ein Update einfach im Verzeichnis /opt/etc/init.d/ "S99pyload update" eingeben.

Debugging/Fehlersuche

Ist leider nicht ganz so einfach. Daher sollte immer vor dem Einsatz der Start / Stop Skripte sichergestellt sein, dass PyLoad auch auf der Kommandozeile einwandfrei läuft. Ansonsten muss man sich mit "echo" Befehlen und der Umleitung in ein Logfile behelfen, welche man so plaziert, dass man erahnen kann, was die Scripte gerade getan haben.

Noch eine Alternative ist doch noch einmal Screen zum Start von PyLoad zu nutzen und nach dem Start der DS sich in Screen einzuklinken, um wenigstens ein paar (Fehler)Meldungen mitzubekommen. PyLoad selbst hat auch noch einen Debug Switch -d welcher weiterhelfen könnte. Die Schwierigkeit liegt aber immer darin, dass man die Debug Meldungen ja beim Reboot erst mal nicht zu sehen bekommt und diese daher in eine Datei umleiten müsste, um überhaupt etwas zu sehen bekommen.

Weblinks