ordner auf änderungen überwachen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von theking2k, 19.03.2007.

  1. #1 theking2k, 19.03.2007
    Zuletzt bearbeitet: 19.03.2007
    theking2k

    theking2k Grünschnabel

    Dabei seit:
    19.03.2007
    Beiträge:
    2
    Zustimmungen:
    0
    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 ^^)


    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 :D

    mfg theking2k
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Wolfgang, 19.03.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Sorry, ein wenig dünn, was du da als Ziel angibst.
    Was willst du denn mit den Dateien in diesn Verzeichnissen (Ordner ist ein komischer Begriff aus einer anderen Welt *g*) machen, und nach welchen Kriterien soll etwas passieren?

    Analysiere erstmal deine Zielstellung richtig, dann ergibt sich auch die Lösung.

    Das ist meist der richtige Schritt zur Lösung.
    Klares Erkennen der Zielstellung.

    Sorry, so kann ich wenig helfen.

    Gruß Wolfgang
    PS Nicht abschrecken lassen, aber das ist wirklich wichtig.
     
  4. nille

    nille Jungspund

    Dabei seit:
    19.12.2006
    Beiträge:
    24
    Zustimmungen:
    0
    Wuerde es nicht einfach ausreichen, alle paar Minuten in dem Verzeichnis nach nachzusehen? Oder das Script von cron-maessig ausfuehren zu lassen? :think:
     
  5. #4 theking2k, 20.03.2007
    Zuletzt bearbeitet: 20.03.2007
    theking2k

    theking2k Grünschnabel

    Dabei seit:
    19.03.2007
    Beiträge:
    2
    Zustimmungen:
    0
    damm

    es würde natürlch reichen das script nur alle Minuten (Stunden) auszuführen, mir war nur nicht klar das es cron gibt :headup: .


    thx nille
     
  6. nille

    nille Jungspund

    Dabei seit:
    19.12.2006
    Beiträge:
    24
    Zustimmungen:
    0
    Bitte :) . Freut mich wenn ich helfen konnte.
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 tastenklopfer, 20.03.2007
    tastenklopfer

    tastenklopfer Solaris & Gentoo

    Dabei seit:
    08.08.2006
    Beiträge:
    34
    Zustimmungen:
    0
    Hi,
    ohne dein Script ausführlich zu lesen...

    Variante 1:
    Schreibe ein sleep 60 in die while-Schleife

    Variante 2:
    nutze das neue Kernelfeature (ab 2.6.13) inotify. Damit kannst Du Programme Signale schicken, wenn sich etwas in einem Teil des Filesystems geändert hat.

    CU
    Tastenklopfer
     
  9. #7 torsthop, 20.03.2007
    torsthop

    torsthop Grünschnabel

    Dabei seit:
    14.10.2006
    Beiträge:
    6
    Zustimmungen:
    0
Thema: ordner auf änderungen überwachen
Besucher kamen mit folgenden Suchen
  1. linux datei änderung überwachen

Die Seite wird geladen...

ordner auf änderungen überwachen - Ähnliche Themen

  1. Wo befindet sich der Autostartordner?

    Wo befindet sich der Autostartordner?: Hallo ich habe CentOS 7.2.15.11 und Desktopumgebung mate , wo befindet sich der Autostartordner?
  2. Ordner für einen User freigeben

    Ordner für einen User freigeben: Hallo, ich möchte mit Samba (auf einem Ubuntu Server) einen Ordner im lokalen Netzwerk freigeben. Dieser Ordner soll auf allen Geräten im...
  3. youtube-dl mit WebUI einrichten - Download-Ordner ändern + Berechtigungen

    youtube-dl mit WebUI einrichten - Download-Ordner ändern + Berechtigungen: Hallo, auf meinem Raspberry Pi habe ich youtube-dl (manuelle Installation; systemweit [wie im UU-Wiki beschrieben]) installiert. Dazu...
  4. Problem mit 1er Freigabe und mehreren Ordnern

    Problem mit 1er Freigabe und mehreren Ordnern: Hallo Ich habe auf unseren home Server das Neuste Debian mit der neusten stabilen Samba Version. Ich habe eine Freigabe die die mehrere Ordner...
  5. Datei namex.txt in ordner namex verschieben

    Datei namex.txt in ordner namex verschieben: Hallo Leute, ich bräuchte ein paar Tipps und Anregungen wie ich in einem Verzeichnis, welches gerade so aussieht n1.txt (Datei) n2.txt (Datei)...