Shellscriptprogrammierung

Bash, Shell, PHP, Python, Perl, CGI
bp158
Posts: 7
Joined: 2006-07-12 08:31

Shellscriptprogrammierung

Post by bp158 » 2006-08-16 21:10

Hi,

ich hab da mal eine Frage und hoffe es kann mir jemand helfen :).

Ich möchte ein Shellscript schreiben, welches in einem spezifiziertem Verzeichnis schaut, ob neue Dateien darin liegen (Uploadverzeichnis). Wenn ja, soll es schauen ob in der Datei /var/logs/xfer.log ein Eintrag zu den Dateien gibt. Wenn ja, soll er unter /var/www/web/uploads ein neues verzeichnis mit dem entsprechend heutigem Datum erstellen und die Datei dort hineinschieben. Wenn das Verzeichnis mit dem heutigen Datum bereits besteht, brauch er es nicht anlegen (was ja auch fehlschlagen würde).

Wie ist soetwas zu Realisieren (schwer/einfach) ?? Habe ein paar (Programmier-)Erfahrungen mit BASIC und PHP ...

Würde mich über konstruktive Hilfe freuen !!

BP

dnspyder
Posts: 111
Joined: 2006-03-10 07:13
Location: Dortmund

Re: Shellscriptprogrammierung

Post by dnspyder » 2006-08-16 21:30

Ist sehr einfach zu realisieren.

Google ist dein Freund... such einfach mal nach "bash scripting" o.ä...

thorsten
Posts: 561
Joined: 2003-02-01 13:14
Location: Fuldatal

Re: Shellscriptprogrammierung

Post by thorsten » 2006-08-17 10:04

Hier mal ein Grundgerüst, was ich dir kurz geschrieben habe, das läßt allerdings die xferlog außen vor und schaut nur in das Uploadverzeichnis:

Code: Select all

#!/bin/sh
###########################
#  debugging:
# set -e
# set -x

#
# Die Arbeitsumgebung anlegen:
cd /tmp
mkdir -p ftpupload webuploads
#
# Variablen definieren:
FTPUPLOAD=/tmp/ftpupload
WEBUPLOADS=/tmp/webuploads
#
HEUTE=$WEBUPLOADS/$(date -I)
#
# demofile:
# touch $FTPUPLOAD/neuerUpload
#
# are there new files?
NEWFILES=$( find $FTPUPLOAD -type f -maxdepth 1) 

test -x $NEWFILES 2>/dev/null &&  echo "nix da" && exit 0

echo "Files vorhanden"
mkdir -p $HEUTE

cd $FTPUPLOAD
for i in $NEWFILES; do 
	i=$(basename $i)
	mv $i $HEUTE/
done
Fallstricke hier:
- ein ftp-Upload könnte noch nicht fertig sein
- eine Datei könnte Umlaute/Leerzeichen enthalten und das Script aus dem Tritt bringen
- es werden nur Dateien verschoben, keine Ordner

Vllt. bringt es dir trotzdem schonmal was.