Anzeige:
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 15 von 33

Thema: Shell File per FTP Senden Fehler

  1. #1
    Registrierter Benutzer
    Registriert seit
    01.03.2006
    Beiträge
    16

    Shell File per FTP Senden Fehler

    Hallo,

    ich habe euch per google gefunden da ich jetzt schon 5 Stunden am rumprobieren bin und einfach keine Lösung für mein Problem finde und ich einfach nicht mehr weiter weiß.

    Ich habe einen Server auf diesen werden täglich Dateien in ein Verzeichnis kopiert, die möchte ich nun per Shell Script und in Verbindung mit einem Cron auf einen weiteren Server kopieren.

    Als Grundstruktur von meinem Shell Script habe ich folgende Variante gewählt:

    Code:
    #!/bin/bash
    cd /home/u/user08/public_html/otr
    I=0
    
    # Die 3 steht fuer hole alles der letzten 3 Tage, was ich noch nicht habe.
    while [ $I -lt 3 ]
    do
    
    DATUM=`date --date "-$I day" '+%y.%m.%d'`
    
    ncftpput -u user -p passwort ftphost  /html/files  /home/u/user08/public_html/otr/datei_${DATUM}_*.zip
    
    I=`expr $I + 1`
    done
    Die Schleife habe ich eben zur Sicherheit eingebaut, falls mal aus unerklärlichen Gründen eine Datei nicht richtig verschoben werden sollte dann direkt am nächsten Tag die Datei mit rüber kopiert werden soll.
    Die Datum Variable sollte eigentlich klar sein, dass "*" ist dafür da, mir alle Dateien mit der Datei_Datum_ Grundstruktur rüberzukopieren, da es mehrere Dateien dieser Art auf dem Server gibt, also zb

    datei_${DATUM}_1.zip
    datei_${DATUM}_irgendeintext.zip
    datei_${DATUM}_hio890.zip

    wenn ich den befehl per ncftp manuell ausführe dann geht alles wunderbar, bloß eben in dem Shell geht es nicht, folgende Fehlermeldung wird mir gebracht:

    Code:
     for reading: No such file or directory.g.de/public_html/otr/datei_06.03.01_*.zip
    : could not open file.ining.de/public_html/otr/datei_06.03.01_*.zip
     for reading: No such file or directory.g.de/public_html/otr/datei_06.02.28_*.zip
    : could not open file.ining.de/public_html/otr/datei_06.02.28_*.zip
     for reading: No such file or directory.g.de/public_html/otr/datei_06.02.27_*.zip
    : could not open file.ining.de/public_html/otr/datei_06.02.27_*.zip
    Kann mir jemand weiterhelfen und evlt. sagen woran der Fehler liegt und was ich verbessern muss dass alles klappt?

    Dankeschön

    P.S
    Sorry, ist mein erster Post und direkt schon ein solches Problem

  2. #2
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Ich denke der Stern ist das Problem.
    Versuche doch mal die Dateien mit dem find-Befehl zu suchen und dann diese Ausgabe (weil sie keinen Stern mehr enthält) herzunehmen.

    kleines Beispiel:
    Code:
    for file in `find . -name "datei_${DATUM}_*.zip"` ; do
    
      quelle=${file}
    
    # Bearbeitung der Datei
    
    done
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  3. #3
    Registrierter Benutzer
    Registriert seit
    01.03.2006
    Beiträge
    16
    hm sorry ich kann damit nichts anfangen, ich bin auf dem bereich script programmierung absoluter anfänger

    könntest du deinen beitrag evtl. ein bisschen ausführen so dass ich als anfänger auch damit was anfangen kann. danke

  4. #4
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Code:
    #!/bin/bash
    cd /home/u/user08/public_html/otr
    I=0
    
    # Die 3 steht fuer hole alles der letzten 3 Tage, was ich noch nicht habe.
    while [ $I -lt 3 ]
    do
    
    DATUM=`date --date "-$I day" '+%y.%m.%d'`
    
    for file in `find . -name "datei_${DATUM}_*.zip"` ;
    do
      DATEI=${file}
    
      ncftpput -u user -p passwort ftphost  /html/files  /home/u/user08/public_html/otr/${DATEI}
    
    done
    
    I=`expr $I + 1`
    done
    Ich hoff mal, dass es so stimmt. Ich programmier selten mit der Bash - lieber mit Perl.
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  5. #5
    Registrierter Benutzer
    Registriert seit
    01.03.2006
    Beiträge
    16
    hm geht leider immer noch nicht

    jetzt habe ich folgende Fehlermeldung:

    : bad interpreter: No such file or directory


    @ caveman
    kann man sowas auch per perl lösen?

  6. #6
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Die Bash reicht hier voll und ganz aus.
    ersetze mal die Zeile mit dem ncftpput mit einer Ausgabe der Variable DATEI:
    echo $DATEI;
    Erscheinen dabei die erwarteten Dateien?
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  7. #7
    Registrierter Benutzer
    Registriert seit
    01.03.2006
    Beiträge
    16
    Nein, es erscheint wie vorhin folgende Fehlermeldung:

    : bad interpreter: No such file or directory

  8. #8
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Im find-Befehl ist noch ein Fehler (der Punkt (aktuelles Verzeichnis) ist falsch)
    ersetze ihn mal so:
    Code:
    find /home/u/user08/public_html/otr/ -name "datei_${DATUM}_*.zip"
    Edit: Ich befuerchte, dass das auch nichts aendert
    Edit2: Versuch mal den find-Befehl ausserhalb des Skripts
    Geändert von Caveman (01-03-2006 um 22:03 Uhr)
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  9. #9
    Registrierter Benutzer
    Registriert seit
    01.03.2006
    Beiträge
    16
    hm nein geht leider immer noch nicht, kommt immer noch die selbe fehlermeldung:

    : bad interpreter: No such file or directory

    so schaut jetzt die aktuelle sh file aus:

    Code:
    #!/bin/bash
    cd /home/u/user08/public_html/otr
    I=0
    
    # Die 3 steht fuer hole alles der letzten 3 Tage, was ich noch nicht habe.
    while [ $I -lt 3 ]
    do
    
    DATUM=`date --date "-$I day" '+%y.%m.%d'`
    
    
    find /home/u/user08/public_html/otr/ -name "datei_${DATUM}_*.zip"
    
    do
      DATEI=${file}
    
    echo $DATEI;
    
    done
    
    I=`expr $I + 1`
    done

  10. #10
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Das "for file in ..." muss drin bleiben:
    Die Zeile lautet also:
    Code:
    for file in `find /home/u/user08/public_html/otr/ -name "datei_${DATUM}_*.zip"` ;

    Probier mal, ob Du so ausserhalb vom Skript eine Ausgabe bekommst:
    Code:
    find /home/u/user08/public_html/otr/ -name "datei_*.zip"
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  11. #11
    Registrierter Benutzer
    Registriert seit
    01.03.2006
    Beiträge
    16
    Ja ich bekomme ne ausgabe, also die Files werden mir da angezeigt...

    dass for file habe ich wieder eingebaut, aber er bringt mir jetzt immer noch die selbe fehlermeldung

    : bad interpreter: No such file or directory

    so schaut dass script jetzt aus:

    Code:
    #!/bin/bash
    cd /home/u/user08/public_html/otr
    I=0
    
    # Die 3 steht fuer hole alles der letzten 3 Tage, was ich noch nicht habe.
    while [ $I -lt 3 ]
    do
    
    DATUM=`date --date "-$I day" '+%y.%m.%d'`
    
    
    for file in `find /home/u/user08/public_html/otr/ -name "datei_${DATUM}_*.zip"` ;
    
    do
      DATEI=${file}
    
    echo $DATEI;
    
    done
    
    I=`expr $I + 1`
    done
    Geändert von gulli (01-03-2006 um 22:22 Uhr)

  12. #12
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Bringt dieses Skript eine vernuenftige Anzeige?
    Code:
    
    #!/bin/bash
    I=0
    
    DATUM=`date --date "-$I day" '+%y.%m.%d'`
    echo $DATUM
    
    echo `find /home/u/user08/public_html/otr/ -name "datei_${DATUM}_*.zip"`
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  13. #13
    Registrierter Benutzer
    Registriert seit
    01.03.2006
    Beiträge
    16
    Nein leider auch nicht, immer noch selbe Fehlermeldung, hm komisch warum dies auch nicht funktioniert

    ist es evtl. nicht einfacher ein Script zu schreiben, was einfach alle Files aus einem Ordner auf den anderen FTP-Server schiebt und schaut ob die selbe File dort schon vorhanden ist oder nicht, wenn ja dann passiert nichts ansonsten wird die file überschrieben? Geht sowas, ist sowas vielleicht einfacher? Könntest du sowas machen? Ich würde dir auch ne kleine Dankesspende per Paypal zukommen lassen

  14. #14
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    So, jetzt hab ich's mal selbst ausprobiert:
    In meinem Verzeichnis habe ich folgende Dateien:
    Code:
    ~/tmp> ll /tmp/datei_*
    -rw-r--r--  1 michael users 0 2006-03-01 22:42 /tmp/datei_06.03.01_1.zip
    -rw-r--r--  1 michael users 0 2006-03-01 22:42 /tmp/datei_06.03.01_2.zip
    -rw-r--r--  1 michael users 0 2006-03-01 22:41 /tmp/datei_abc_1.zip
    Mein Versuchsskript schaut so aus:
    Code:
    ~/tmp> cat filefinden.sh
    #!/bin/bash
    I=0
    
    DATUM=`date --date "-$I day" '+%y.%m.%d'`
    echo $DATUM
    
    echo `find /tmp -name "datei_${DATUM}_*.zip"`
    und die Ausgabe so:
    Code:
    ~/tmp> sudo ./filefinden.sh
    06.03.01
    /tmp/datei_06.03.01_1.zip /tmp/datei_06.03.01_2.zip
    Bei mir geht es also.
    Koennte der Fehler noch wo anders liegen?
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  15. #15
    Registrierter Benutzer
    Registriert seit
    01.03.2006
    Beiträge
    16
    hm also bei mir funktioniert die ausgabe überhaupt nicht, allerdings der such befehl sehr wohl... hm komisch

    hast du ne idee woran dass liegen könnte?

    oder könntest du mir evtl nen script schreiben was einfach alle Files aus einem Ordner auf den anderen FTP-Server schiebt und schaut ob die selbe File dort schon vorhanden ist oder nicht, wenn ja dann passiert nichts ansonsten wird die file überschrieben. könntest du sowas machen? wäre riesig nett, würde dies auch mit ner gegenleistung belohnen, geld per paypal oder sowas...

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •