SUCHE script für FTP Ordner Kontrolle

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SUCHE script für FTP Ordner Kontrolle

    Hallo,

    wer kann mir bei folgendem Problem weiterhelfen? Wir geben
    einer handvoll Kunden von uns Zugangsdaten für einen bestimmten,
    dem Kunden zugewiesenen Ordner auf unserem FTP-Server, um darauf Daten rauf- bzw. herunterzuladen.

    Bis dahin funktioniert alles wie Butter.
    Das Problem ist, das wir nicht benachrichtigt werden, wenn ein Kunde Daten
    in seinen Ordner uploadet.

    Gibt es evtl. ein Script, das per Cronjob alle halbe Stunde aktiviert wird, das
    die Ordner durchsucht und beobachtet ob neue Dateien reingeladen worden sind.
    Sollte dies der Fall sein, müßte uns das Script eine kurze eMail zukommen lassen.

    Kann mir dabei einer behilflich sein?

    Vielen Dank und viele Grüße an alle Boardis
    Sbocky
    Zuletzt geändert von Sbockyman; 06.06.2006, 15:28.
    Viele Grüße
    Sbockyman

  • #2
    Brauchst du gar nicht unbedingt ein Script. Ein Cronjob könnte alle 5 Minuten nach neuen Dateien suchen und falls vorhanden eine Mail senden.
    Versuchs mal hiermit:

    if test `find /pfad -cmin -5 | grep -c "/pfad/"` -gt 0; then mail -s "new files" you@example.com `find /pfad -cmin -5`; fi

    Ungetestet!

    Kommentar


    • #3
      Original geschrieben von onemorenerd
      Brauchst du gar nicht unbedingt ein Script. Ein Cronjob könnte alle 5 Minuten nach neuen Dateien suchen und falls vorhanden eine Mail senden.
      Versuchs mal hiermit:

      if test `find /pfad -cmin -5 | grep -c "/pfad/"` -gt 0; then mail -s "new files" you@example.com `find /pfad -cmin -5`; fi

      Ungetestet!
      Hallo und danke für deine hilfe. Welche Wörter muss ich denn ersetzen?

      ich nehme an test ist der jeweilige ordner zum durchsuchen?

      und was ich noch entdeckt habe: bei meinem Provider gibt es nur stündliche cronjobs aktivierung! muss ich dazu noch was beachten?
      Viele Grüße
      Sbockyman

      Kommentar


      • #4
        ich habe nochmals nachgeschaut. habe nur zwei möglichkeiten bei der cronjobs erstellung:

        http aufruf per url oder
        direkter Scriptaufruf
        Viele Grüße
        Sbockyman

        Kommentar


        • #5
          Nein, test ist ein Befehl, ein Tool, eine alternative Schreibweise von [ ].

          if test `find /pfad -cmin -5 | grep -c "/pfad/"` -gt 0; then mail -s "new files" you@example.com `find /pfad -cmin -5`; fi

          Die markierten Stellen bedeuten der Reihenfolge ihres Auftretens nach:
          - der absolute Pfad des zu kontrollierenden Ordners
          - die Minuten, die seit dem letzten Cron-Run vergangen sind
          - wieder der Pfad, diesmal mit / am Ende
          - Betreff der Email
          - deine Mailadresse
          ... der Rest ist Wiederholung.

          Aber wenn dein Provider nur alle 60 Minuten Cronjobs triggert, dann schränkt er dich evtl. noch anderweitig ein, sodaß dieses kleine Shellscript sowieso nicht läuft. Prüf das mal.

          Kommentar


          • #6
            Original geschrieben von Sbockyman
            http aufruf per url oder
            direkter Scriptaufruf
            Dann Scriptaufruf ... schreib das in eine Textdatei, entsprechende Shebang-Zeile (wahrscheinlich /bin/bash) dazu ... Test.

            Kommentar


            • #7
              Original geschrieben von onemorenerd
              Dann Scriptaufruf ... schreib das in eine Textdatei, entsprechende Shebang-Zeile (wahrscheinlich /bin/bash) dazu ... Test.
              danke nochmals für deine hilfe. eine bitte hätte ich noch. kannst du mir eine textdatei erstellen, in der ich nur noch die dick geschriebenen wörter austauschen muss. Bin im programieren eine niete. meine email für die textdatei würde lauten: sbocky@gmx.de


              viele dank vorab
              Viele Grüße
              Sbockyman

              Kommentar


              • #8
                Code:
                #!/bin/bash
                if test `find /pfad -cmin -5 | grep -c "/pfad/"` -gt 0
                then
                mail -s "new files" [email]you@example.com[/email] `find /pfad -cmin -5`
                fi

                Kommentar


                • #9
                  danke für deine hilfe, aber leider funktioniert es nicht.
                  ich bräuchte ein php-script hat mir der support gesagt.
                  ich habe einen ordner mit dem namen /daten/witt.
                  In diesem ordner werden ab und zu daten upgeloadet.
                  ich würde gerne eine email bekommen, wenn der kunde
                  die daten raufgeladen hat.

                  ist dies mit php machbar, oder besser gesagt, gibt es evtl so
                  ein fertiges script?

                  gruss
                  sbocky
                  Viele Grüße
                  Sbockyman

                  Kommentar


                  • #10
                    PHP-Code:
                    <?php

                    $path 
                    '/daten/witt'
                    $interval 3600;
                    $subject 'new files';
                    $to 'mail@example.com';

                    $lastrun time() - $interval;
                    clearstatcache();
                    foreach (
                    glob($path.'/*') as $file) {
                        if (
                    filemtime($file) > $lastrun) {
                            
                    $newfiles[] = $file;
                        }
                    }

                    if (
                    count($newfiles) > 0) {
                        
                    mail($to$subject'total: '.count($newfiles)."\r\n".implode("\r\n"$newfiles));
                    }

                    ?>

                    Kommentar


                    • #11
                      bin überglücklich, es funktioniert nach ein paar Fehlern jetzt:
                      habe folgendes Script:

                      <?php

                      $path = '/kunden/meine-domain.de/daten/sonstiges';
                      $interval = '3600';
                      $subject = 'Neuer Datenupload im Sonstigen-Ordner';
                      $to = 'mail@meine-domain.de';

                      $lastrun = time() - $interval;
                      clearstatcache();
                      foreach (glob($path.'/*') as $file) {
                      if (filemtime($file) > $lastrun) {
                      $newfiles[] = $file;
                      }
                      }

                      if (count($newfiles) > 0) {
                      mail($to, $subject, 'total: '.count($newfiles)."\r\n".implode("\r\n", $newfiles));
                      }

                      ?>


                      Nun wenn ich die Mail bekomme, steht als Absenderadresse folgendes drin:
                      Webserver User <u54567@volley.ispgateway.de>

                      kann man dies noch besser modifizieren mit einer festen EMail-Adresse?

                      Und kann man in der eMail noch evtl die Dateigröße dazuschreiben?
                      Zuletzt geändert von Sbockyman; 02.06.2006, 20:14.
                      Viele Grüße
                      Sbockyman

                      Kommentar


                      • #12
                        Original geschrieben von onemorenerd
                        PHP-Code:
                        <?php

                        $path 
                        '/daten/witt'
                        $interval 3600;
                        $subject 'new files';
                        $to 'mail@example.com';

                        $lastrun time() - $interval;
                        clearstatcache();
                        foreach (
                        glob($path.'/*') as $file) {
                            if (
                        filemtime($file) > $lastrun) {
                                
                        $newfiles[] = $file;
                            }
                        }

                        if (
                        count($newfiles) > 0) {
                            
                        mail($to$subject'total: '.count($newfiles)."\r\n".implode("\r\n"$newfiles));
                        }

                        ?>
                        hi onemorenerd,

                        vielen Dank für deine Hilfe. funktioniert alles super. Könntest du mir bitte noch im Script eine Dateigrößenabfrage einbauen, die ich auch per email bekomme?

                        liebe grüße
                        sbockyman
                        Viele Grüße
                        Sbockyman

                        Kommentar

                        Lädt...
                        X