[How-To] Daily move mit EMail Report

  • Hallo erstmal :)
    Nachdem ich seit einigen Tagen daran arbeite mir das Leben leichter zu machen und dies nun auch geschafft habe, dachte ich mir ich teile meine Arbeit mit euch, um ggf. auch euch das Leben leichte zu machen!


    Kurz zusammengefasst um was es geht:
    Per JDownloader speichere ich meine Downloads immer gleich auf einem share, da ich sie danach in mein Multimedia share verschoben haben möchte muss ich dies per Web-Interface machen, da Windows ja wenn man von einem share zum anderen kopiert, alles herunter lädt und dann wieder hoch. Nun hab ich mir ein Skript inkl. Cronjob erstellt das jeden Tag den Content aus den Ordnern in die richtigen Ordner im anderen share verschiebt und mir einen Report per mail zuschickt.


    Anleitung
    Noch kurz Vorweg wie die 2 shares aufgebaut sind:


    Download
    ├───Raw
    └───Unpacked
    ├───Animes
    ├───Filme
    └───Serien


    Multimedia
    ├───Animes
    ├───Filme
    └───Serien


    Voraussetzungen
    Entware-ng um benötigte Programme zu installieren! Forum Thread

    Bash
    opkg updateopkg install nanoopkg install coreutils-mv



    Ich empfehle nano als Texteditor aber vi geht natürlich auch, das ist dann Geschmackssache :)
    Die coreutils-mv wird benötigt um die --verbose (-v) und -n funktion vom mv Command nutzen zu können. (Um die Aktion zu Loggen)


    Move

    Bash: move.sh
    #!/bin/shdate=$(date +'%a %d %b %Y %H:%M:%S') #Datum im Format Thu 28 Jul 2016 21:20:27if [ "$1"  = "m" ]; then	count=$(ls -l /share/Download/Unpacked/Filme | grep -v ^l | wc -l) 	if [ $count != "0" ]; then #Nur verschieben wenn Dateien zum verschieben im Ordner sind		mv -vn /share/Download/Unpacked/Filme/* /share/Multimedia/Filme |  tr ’ " " | tr ‘ " " > /tmp/moves		while read move; do			echo [$date] "Movie: "$move		done < /tmp/moves		rm /tmp/moves	else		echo [$date] "Movie: No Files to Move!"	fielif [ "$1" = "s" ]; then	count=$(ls -l /share/Download/Unpacked/Serien | grep -v ^l | wc -l)        if [ $count != "0" ]; then		mv -vn /share/Download/Unpacked/Serien/* /share/Multimedia/Serien |  tr ’ " " | tr ‘ " " > /tmp/moves                while read move; do                        echo [$date] "Series: "$move                done < /tmp/moves                rm /tmp/moves	 else                echo [$date] "Series: No Files to Move!"        fielif [ "$1" = "a" ]; then	count=$(ls -l /share/Download/Unpacked/Animes | grep -v ^l | wc -l)        if [ $count != "0" ]; then	mv -vn /share/Download/Unpacked/Animes/* /share/Multimedia/Animes  |  tr ’ " " | tr ‘ " " > /tmp/moves                while read move; do                        echo [$date] "Anime: "$move                done < /tmp/moves                rm /tmp/moves	else                echo [$date] "Anime: No Files to Move!"        fielse	echo [$date] "Move failed!"fi

    Das move.sh Skript wird mit einem Parameter aufgerufen der die Art der zu verschiebenden Files angibt, um den im richtigen Ordner zu landen.


    Mail


    Ihr müsst um eine Benachrichtigungsmail einrichten um das Mail Skript nutzen zu können. --> Extern verlinktes Bild entfernt! Der Grund!


    Bash: sendreport.sh
    #!/bin/sh#Hole die Informationen der BenachrichtigungsemaileinstellungSENDER=$(/sbin/getcfg Alert "Sender")USER=$(/sbin/getcfg Alert "Alert Mail")NAS_NAME=$(/sbin/getcfg System "Server Name")SUBJECT=$1" Move Report from "$NAS_NAMEDATE=$(date)echo "From: $SENDER" >> /tmp/movereport.daily.$$echo "To: $USER" >> /tmp/movereport.daily.$$echo "Subject: $SUBJECT" >> /tmp/movereport.daily.$$echo "" >> /tmp/movereport.daily.$$cat /var/log/moviemove.log  >> /tmp/movereport.daily.$$cat /var/log/seriesmove.log >> /tmp/movereport.daily.$$cat /var/log/animemove.log  >> /tmp/movereport.daily.$$/usr/sbin/sendmail $USER < /tmp/movereport.daily.$$rm /tmp/movereport.daily.$$


    Crontab
    Zu guter Letzt noch der Cronjob.
    Mit einem Texteditor die /etc/config/crontab bearbeiten.
    Anleitungen wie ein Cron aufgebaut ist gibt es zur hauf! Hier ein Calculator: Link


    Bash
    15 20 * * * /share/Download/SCRIPTS/move.sh m > /var/log/moviemove.log && cat /var/log/moviemove.log >> /var/log/move.log15 20 * * * /share/Download/SCRIPTS/move.sh s > /var/log/seriesmove.log && cat /var/log/seriesmove.log >> /var/log/move.log15 20 * * * /share/Download/SCRIPTS/move.sh a > /var/log/animemove.log && cat /var/log/animemove.log >> /var/log/move.log20 20 * * * /share/Download/SCRIPTS/sendreport.sh [REPORT]


    Dannach nur noch den Cron service neustarten:


    Bash
    crontab /etc/config/crontab
    /etc/init.d/crontab.sh restart


    Hoffe irgendjemandem bringt das was :D


    Lg
    _schni


    :qnap:

    2 Mal editiert, zuletzt von _schni ()