T
theking2k
Grünschnabel
verzeichniss auf änderungen überwachen
moin
so mein erster post und gleich eine frage ^^
shell: bash
OS: kubuntu
kernel: 2.6.15-28-386
ok zu meiner frage
ich will ein script schreiben das permanent alle daten in einem bestimmten verzeichniss überprüft und gegebenenfalls verarbeitet. das einzigste was mir einfällt ist es in eine endlosschleife (while [ 1 ]) zu packen was natürlich grosser schwachsinn wäre. deswegen wollte ich hier mal fragen ob es eine bessere lösung gibt. ziel der ganzen geschichte ist fertige torrent in einen anderen ordner zu kopieren. anbei poste ich mal meinen versuch mit einer endlos schleife (nicht lachen ist so ziemlich mein erstes bash script ^^)
hoffe das macht die frage leichter verständlich.
PS. ordner wurde durch verzeichniss ersetzt - willkommen in eurer welt
mfg theking2k
moin
so mein erster post und gleich eine frage ^^
shell: bash
OS: kubuntu
kernel: 2.6.15-28-386
ok zu meiner frage
ich will ein script schreiben das permanent alle daten in einem bestimmten verzeichniss überprüft und gegebenenfalls verarbeitet. das einzigste was mir einfällt ist es in eine endlosschleife (while [ 1 ]) zu packen was natürlich grosser schwachsinn wäre. deswegen wollte ich hier mal fragen ob es eine bessere lösung gibt. ziel der ganzen geschichte ist fertige torrent in einen anderen ordner zu kopieren. anbei poste ich mal meinen versuch mit einer endlos schleife (nicht lachen ist so ziemlich mein erstes bash script ^^)
Code:
#!/bin/bash
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
# mi torrent script - my first bash script
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#logging optionen
enablelog=1
logfile="/var/log/torrent"
#logentry (vars: $tname $tfolder $tinfohash $tsize $torr $announce)
logentry="`date +%c` torrent download $torr completed"
#torrent settings
minport=33333
maxport=44444
upspeed=0
downspeed=0
#other settings
screenname="torrent"
keeptorrents=1
visible=1
#folders
donefolder="/home/theking2k/scripts/loria.core/torrent_test/competed"
junkfolder="/home/theking2k/scripts/loria.core/torrent_test/completed.torrent"
torrfolder="/home/theking2k/scripts/loria.core/torrent_test/working"
#starting bittorrent
#screen -t $screenname btlaunchmanycurses.bittornado "$torrfolder" --saveas_style 3 --upnp_nat_access 0 --minport $minport --maxport $maxport --max_upload_rate $upspeed --max_download_rate $downspeed --auto_flush 5
#function if the torrent is finished
finished ()
{
mv "$1" "$donefolder"
if [ $keeptorrents = 1 ]; then
mv "$2" "$junkfolder"
else
rm "$2"
fi
}
strlen ()
{
for i in "$@"; do
echo ${#i}
done
}
#loop to test files
while [ 1 ]; do
for file in $torrfolder/*.torrent; do
if [ $file = "$torrfolder/*.torrent" ]; then
echo "no files found"
else
# setup names
path=$(echo "$file" | cut -c 1-$(( $(strlen "$file") - 8 )))
# get torrent infos
info=$(btshowmetainfo "$file")
torr="`echo "$info" | grep "metainfo file.:" | sed s/^[^:]*:// | sed s/^" "// | sed s/" "[^$]*//`"
tannounce="`echo "$info" |grep "announce" | sed s/^[^:]*:// | sed s/^" "// | sed s/" "[^$]*//`"
tinfohash="`echo "$info" | grep "info hash.." | sed s/^[^:]*:// | sed s/^" "// | sed s/" "[^$]*//`"
tdirname="`echo "$info" | grep "directory name:" | sed s/^[^:]*:// | sed s/^" "// | sed s/" "[^$]*//`"
tsize="`echo "$info" | grep "size" | sed s/^[^:]*:// | sed s/^" "// | sed s/" "[^$]*//`"
tfilename="`echo "$info" | grep "file name" | sed s/^[^:]*:// | sed s/^" "// | sed s/" "[^$]*//`"
#get download current size if folder exsist
if [ -d $path ]; then
tester=$(( $(du -sb "$path" | sed s/" "[^$]*//) - 4096 ))
if [ $tester -ge $tsize ];then
if [ $verbose = 1 ]; then
echo "---- torrent is ready ----"
fi
finished $path $file
if [ $visible=1 ];then
echo "$logentry" >> "$logfile"
fi
else
if [ $visible = 1 ]; then
echo "---- torrent not ready ----"
fi
fi
fi
#show info if visible = 1
if [ $visible = 1 ]; then
echo -e "---- $torr ----"
echo -e "info hash:\t$tinfohash"
echo -e "tracker:\t$tannounce"
echo -e "savepath:\t$path"
echo -e "size:\t\t$tsize"
echo -e "curr size:\t$tester"
echo
echo
fi
fi
done
done
hoffe das macht die frage leichter verständlich.
PS. ordner wurde durch verzeichniss ersetzt - willkommen in eurer welt
mfg theking2k
Zuletzt bearbeitet: