PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Per Shellscript Ordnerangaben überprüfen



midway
23.02.09, 13:23
Hi Leute,

Habe ein Housekeeping script geschrieben welches stetig wachsende Logfiles in ein dafür vorgesehenes Verzeichnis kopiert und das Datum dazugefügt wird. Die aufzurufenden Logfiles liegen in einer anderen Datei namens files.ini

Jetzt habe ich das Problem dass ich im Script überprüfen muss ob die Pfade in der Datei files.ini auch korrekt sind und auf ein logfile verweisen.

Bsp gültiger Pfad: /opt/logfiles/pr.log

Bsp ungültiger Pfad: /opt/logfiles/ oder /opt/pr.log oder einfach nur pr.log

Da ich mit Shellscripting erst vor kurzem angefangen habe bin ich mit meinem Latein bereits am Ende und finde einfach keine Lösung...

Hier mein Script:


#!/bin/sh
DATE=`date +"%d%m%Y_%H%M"`

##Auslesen der einzelnen Pfade
for i in `cat /usr/local/bin/files.ini`
do

##Überprüfen der Pfadangaben
ls $i
if [$? = 0]; then

##Kopieren der Dateien in dasselbe Verzeichnis
cp $i $i-DATE

##Inhalt leeren jeder Datei
echo "" > $i
else
echo "Fehler in den Pfadangaben! Bitte überprüfen!"
echo "Ungültiger Pfad:"
echo $i
exit 0
fi

## Alle Dateien älter als 7 Tage löschen
find $i -mtime +7 -exec rm -f {} \;
done

marce
23.02.09, 13:25
Ich glaube, Du möchtest Dir mal

man test
genauer anschauen.

asi_dkn
23.02.09, 13:30
Wenn du die Files nach einem festen Schema benannt hast, resp. einen fixen Pfade (z.b. /var/log) benutzt, dann kannst du das mit einem Regex machen. Ob das File existiert, ob es ein File ist und ob es was drin hat kannst du entweder mit test (siehe Vorredner) machen oder gleich in einer if-Abfrage.


if ( -e ${file} ); then...

Die Manpage zur Bash ist echt heftig, und zum sich einlesen kann ich dir den "Advanced Bash Scripting Guide (http://tldp.org/LDP/abs/html/)" empfehlen wo genau solche Dinge auch abgehandelt werden.

midway
23.02.09, 13:40
Die Files liegen in verschiedenen Orten.

Danke werde mir mal die manual page von test anschauen. Werde dann heir posten obs geklappt hat