Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Aktion ausführen wenn Dateien vorhanden sind ...
Gehen Sie zu Seite 1, 2  Weiter
 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Stormbringer



Anmeldungsdatum: 11.01.2001
Beiträge: 1570
Wohnort: Ruhrgebiet

BeitragVerfasst am: 21. Mai 2003 20:25   Titel: Aktion ausführen wenn Dateien vorhanden sind ...

Hallo,

vielleicht kann mir nochmals jemand helfen.
Wie muß ein Skript aussehen, welches alle 5 Minuten per cron aufgerufen wird, und Dateien per FTP Verbindung verschicken soll, wenn denn welche vorhanden sind?
Ich nehme an, es geht mit irgendwelchen if Abfragen .... da ich aber kein coder bin, habe ich mit so etwas massive Probleme ...

Das Shellskript heißt transfer.sh (da läuft noch mehr ab), das zu kontrollierende Verzeichnis /FTS/DATEN/21
Einen .netrc EIntrag habe ich erstellt, die Anmeldung funzt einwandfrei.

Danke & Gruß
_________________
Continuum Hierarchy Supervisor:
You have already been assimilated.
(Rechtschreibungsreformverweigerer!)
 
Benutzer-Profile anzeigen Private Nachricht senden

ratte
Gast





BeitragVerfasst am: 21. Mai 2003 21:21   Titel: Re: Aktion ausführen wenn Dateien vorhanden sind ...

geht wohl um cron seinen job, wenn ich das richtig ueberflogen habe.

code:

# alle 5 minuten wonderboy ausfuehren
*/5 * * * * /path/to/wonderboy



ansonsten hilft 'man crontab' immens, selbst, wenn man kein Programmierer ist...

ratte
 

Stormbringer



Anmeldungsdatum: 11.01.2001
Beiträge: 1570
Wohnort: Ruhrgebiet

BeitragVerfasst am: 22. Mai 2003 7:21   Titel: Re: Aktion ausführen wenn Dateien vorhanden sind ...

Hallo ratte,

das mit dem cron Job war mir bekannt ... trotzdem Danke!

Es geht mir aber aber um den Aufbau der Datei, die per crontab aufgerufen wird.
Denn es soll ja nur eine Verbindung aufgebaut werden, wenn Dateien im Verzeichnis /FTS/DATEN/21 vorhanden sind.
Sprich:
- crontab startet alle 5 Minuten das Skript transfer.sh
- stellt das dann gestartete Skript transfer.sh fest, daß sich Dateien in /FTS/DATEN/21 vorhanden sind, sollen diese übertragen werden
- sind keine Daten vorhanden, passiert gar nichts

Gruß
_________________
Continuum Hierarchy Supervisor:
You have already been assimilated.
(Rechtschreibungsreformverweigerer!)
 
Benutzer-Profile anzeigen Private Nachricht senden

Jochen
Gast





BeitragVerfasst am: 22. Mai 2003 7:43   Titel: Re: Aktion ausführen wenn Dateien vorhanden sind ...

Nun, wenn Daten vorhanden sind, wird ein "ls" sie sicherlich anzeigen, nicht wahr?
code:

#!/bin/bash
PATH=/bin:/usr/bin:/usr/local/bin
DATADIR=/FTS/DATEN/21
if [[ $(ls $DATA_DIR | wc -l) -gt 0 ]] ; then
ftp ....
fi
exit 0

In der .netrc kannst Du über
macdef init
ein Makro definieren, das automatisch bei einem Auto-Login ausgeführt wird. Dort kommt dann einfach ein
bin

prompt
mput *
bye
rein. Keine Leerzeilen dazwischen, denn mit der ersten Leerzeile endet das Makro. (Das [pre]-Tag schmeisst da leider in der Darstellung Leerzeilen rein.)

Jochen
 

Stormbringer



Anmeldungsdatum: 11.01.2001
Beiträge: 1570
Wohnort: Ruhrgebiet

BeitragVerfasst am: 22. Mai 2003 9:29   Titel: Re: Aktion ausführen wenn Dateien vorhanden sind ...

Hallo Jochen,

vielen Dank!! Die .netrc besteht schon .. es sind dort einige Machinen angegeben, u. a. zum download von NAI AV Definitionen.

Das mit dem Skript werde ich später einmal probieren.

Danke & Gruß
_________________
Continuum Hierarchy Supervisor:
You have already been assimilated.
(Rechtschreibungsreformverweigerer!)
 
Benutzer-Profile anzeigen Private Nachricht senden

Jochen
Gast





BeitragVerfasst am: 22. Mai 2003 12:12   Titel: Re: Aktion ausführen wenn Dateien vorhanden sind ...

Und wenn Du kein Makro über die .netrc verwenden willst, lässt sich der ftp auch über ein Here-Skript fernsteuern:
code:

ftp zielrechner.de <<EOF
prompt
bin
mput *
bye
EOF
# Und hier geht das Shellskript weiter, da EOF das Here-Skript abschliesst
# (muss das gleiche Wort wie nach den << sein).



Jochen
 

Andreas B.
Gast





BeitragVerfasst am: 23. Mai 2003 6:29   Titel: Re: Aktion ausführen wenn Dateien vorhanden sind ...

code:

if [ -x /path/to/file ]; then ...

 

Jochen
Gast





BeitragVerfasst am: 23. Mai 2003 7:56   Titel: Re: Aktion ausführen wenn Dateien vorhanden sind ...

@Andreas B.: Schön und gut, wenn der Name des einen zu übertragenden Files feststeht. Was aber, wenn a) der Dateiname variabel und b) mehr als eine einzelne Datei zu übertragen sind?

Jochen
 

Andreas B.
Gast





BeitragVerfasst am: 23. Mai 2003 20:25   Titel: Re: Aktion ausführen wenn Dateien vorhanden sind ...

zu 1.
das sollte ein via Pseudocode

Variable := ls -l | suchmirallenicht(d und/oder l) attribute nur die Dateinamen bitte
die Variable enthaelt dann z.B.
file1
file2
file3

fuer n := 1 to maxlines(Variable) do
{
resultat == resultat + $(echo -x $( echo $Variable | sucheZeile nummer(n) ))
}
.. Wink nur eine kleine idee, sich selbsterzeugender Code, die Umsetzung als Script wuerde ich persoenlich mit TCL machen, aber das ist
Geschmackssache, man laesst den Code den man braucht zur Laufzeit selbst erzeugen und evaluiert ihn dann sollte in bash auch gehen,


zu 2. Smile
if [ -x /path/to/file -x /path/to/file -x /path/to/file ]; then

gibt noch weitere Trigger ... -a -r ...

btw.. man muss auch verhindern das Dateien die z.B. durch Ihre Groesse langsamer geschrieben werden nicht in dem Zustand kopiert werden,
denn sonst gibt`s Datenfetzen.
 

Andreas B.
Gast





BeitragVerfasst am: 23. Mai 2003 20:26   Titel: Re: Aktion ausführen wenn Dateien vorhanden sind ...

btw die Dateinamen kann man rausschneiden via cut einfach die Spaltenenden und Anfaenge
 

ratte
Gast





BeitragVerfasst am: 23. Mai 2003 21:19   Titel: Re: Aktion ausführen wenn Dateien vorhanden sind ...

@Andreas B.

Ich will deine tcl-script Befaehigung ja nicht mindern, aber IMHO wuerde ich fuer solche einfachen Aufgaben die default shell beauftragen.

Sicher ist die shell nicht soooo einfach zu programmieren, aber wozu 3rd-party software belangen, wenn es mit dem login-bordmittel vollkommen ausreicht?

Ist natuerlich Ansichtssache und ich nutze z.b. zum Kernel konfigurieren make menuconfig (verwendet tcl und ncurses) und kein make config, aber bei solchen Sachen ist die Linux Praeambel: "keep it simple, keep it short" doch geradezu vordergruendig, findest du nicht?

ratte
 

Andreas B.
Gast





BeitragVerfasst am: 23. Mai 2003 23:40   Titel: Re: Aktion ausführen wenn Dateien vorhanden sind ...

ich sagte auch Geschmackssache,
"keep it simple, keep it short", jup rekursiv wäre noch ne Möglichkeit ;D
die runtime code evaluation müsste auch in sh gehen nur TCL hat den Vorteil das alles
als Liste verwaltet wird, das macht viele Dinge wesentlich einfacher.
 

F. Tp
Gast





BeitragVerfasst am: 25. Mai 2003 19:23   Titel: Re: Aktion ausführen wenn Dateien vorhanden sind ...

Aufgabenstellung war:

Wie muß ein Skript aussehen, welches alle 5 Minuten per cron aufgerufen wird, und Dateien per FTP Verbindung verschicken soll, wenn denn welche vorhanden sind?


Das ist doch wirklich einfach, also ich verschicke einfach die Dateien, na und wenn keine da sind werden auch keine verschickt (oder gibt es irgendwelche Tricks, um auch nicht existierende Dateien zu verschicken?).
Nun, wenn ich ein Packet verschicke, ist es hier weg und hoffentlich bald irgendwo anders, am günstigsten dort, wo ich es hinschicken wollte. Dateien werden aber im Gegensatz zu Packeten oft kopiert ...
Vielleicht sollte es einfach nur gut aussehen, das Script.
 

Stormbringer



Anmeldungsdatum: 11.01.2001
Beiträge: 1570
Wohnort: Ruhrgebiet

BeitragVerfasst am: 27. Mai 2003 9:41   Titel: Re: Aktion ausführen wenn Dateien vorhanden sind ...

Hallo Jochen,

wenn ich das von Dir aufgezeichnete Skript starte, erscheint folgende Meldung:
code:

./check_file.sh: syntax error at line 5: `(' unexpected



Die Nutzung des "here Skripts" funzt ebenfalls nicht - es wird trotzdem nach einem Benutzernamen/Password gefragt.

Gruß
_________________
Continuum Hierarchy Supervisor:
You have already been assimilated.
(Rechtschreibungsreformverweigerer!)


Zuletzt bearbeitet von Stormbringer am 27. Mai 2003 9:41, insgesamt 1-mal bearbeitet
 
Benutzer-Profile anzeigen Private Nachricht senden

Jochen
Gast





BeitragVerfasst am: 27. Mai 2003 10:09   Titel: Re: Aktion ausführen wenn Dateien vorhanden sind ...

Tscha... Ich hab den Code gerade mal mittels Copy'n'Paste übernommen und nur den Inhalt von DATADIR... ARGH!

Wenn man "DATADIR" setzt, sollte man es auch benutzen, statt plötzlich "DATA_DIR" zu verwenden. (Man beachte den überflüssigen Unterstrich.) Das wäre also Bug 1; der geht auf meine Kappe. Ansonsten habe ich das Skript aber wirklich per Cut'n'Paste übernommen, vor das ftp ein echo gestellt und DATADIR zu Testzwecken auf "/bin" gesetzt. Funzt einwandfrei. Wenn sich die Shell über ein unerwartetes "(" beschwert, könnte

  • das $ davor fehlen oder ein Blank zwischen $ und ( stehen,
  • die Conditional Expression "[[ ... ]]" einen Tappfehler aufweisen,
  • das if-Statement falsch gebildet worden sein?

    Alles weisst darauf hin, dass Bug 2 auf Deine Kappe geht. Damit wären wir ja wieder ausgeglichen...

    Jochen
  •  

    Beiträge vom vorherigen Thema anzeigen:   
         Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
    Gehen Sie zu Seite 1, 2  Weiter
    Seite 1 von 2

     
    Gehen Sie zu:  

    Powered by phpBB © phpBB Group
    pro_linux Theme © 2004 by Mandaxy