Besten Dank an euch beide!
Ich habe mich für folgende Lösung entschieden:
#!/bin/sh
#################################################################
# clean_edidata_cron.sh #
# +++++++++++++++++++++ #
# Bereinigt bei angegebenen Parter die EDI Emfang/Gesendet- #
# Daten welche älter als X Tage alt sind. #
# Einplanung via cron über das Script: #
# clean_edidata_call_cron.sh #
# Erster Parameter = Partner #
# Zweiter Parameter = Emfpang #
# Dritter Parameter = Gesendet #
# Logfile unter /var/scripts/edi/logs/clean_edidata_cron.log #
# Dieses Script muss unter /opt/edi/scripts liegen! #
# #
# 25.02.2015 BEH - Erste Version #
# 02.04.2015 BEH - Speicherort/Name des Logs/Scripts angepasst #
# - Pro Ausführung wird neu ein Log geschriebn #
# und nach 30 Tagen bereinigt. #
#################################################################
clear
# Variabeln
partner=$1
empfang=$2
gesendet=$3
logfile="/var/scripts/edi/logs/clean_edidata_cron-$(date '+%Y-%m-%d').log"
# Überprüfung der Eingabeparameter
if [ $# -ne 3 ]
then
echo "Fehlende Parameter:"
echo "Parameter 1 = Name des Partners"
echo "Parameter 2 = Datenbereinigung-EMPFANG älter als X Tage"
echo "Parameter 3 = Datenbereinigung-GESENDET älter als X Tage"
exit 1
fi
# Im Logfile /var/scripts/edi/logs/clean_edidata_cron*.log werden alle bereinigten Verzeichnisse niedergeschrieben
find /opt/edi/partners/$partner/Empfang/ -type d -mtime "+"$empfang -exec ls -adltr {} \; >> "$logfile"
find /opt/edi/partners/$partner/Gesendet/ -type d -mtime "+"$gesendet -exec ls -adltr {} \; >> "$logfile"
# Sucht un bereinigt beim jeweilgen Partner die Dateien im Empfang-Ordner bzw Gesendet-Ordner
find /opt/edi/partners/$partner/Empfang/ -type d -mtime "+"$empfang -exec ls -altr {} \;
find /opt/edi/partners/$partner/Gesendet/ -type d -mtime "+"$gesendet -exec ls -altr {} \;
find /opt/edi -name 'clean_edidata_cron-*.log' -type f -mtime +30 -delete
Sowie:
#!/bin/sh
#################################################################
# clean_edidata_by_user.sh #
# ++++++++++++++++++++++++ #
# Bereinigt bei einem Partner die EDI Emfpang/Gesendet-Daten #
# gemäss User-Eingabe. #
# Logfile unter = /var/scripts/edi/logs/ #
# clean_edidata_by_user*.log #
# #
# 20.02.2015 BEH - Erste Version. #
# 24.02.2015 BEH - Input/Output darf nicht überall bereinigt #
# erden! #
# - Abfrage vor dem löschen. #
# 02.04.2015 BEH - Scipt und Logile unbenannt sowie location #
# geändert. #
#################################################################
clear
# Variabeln
partner=$1
empfang=$2
gesendet=$3
antwort=$4
logfile="/var/scripts/edi/logs/clean_edidata_by_user-$(date '+%Y-%m-%d').log"
# User-Abfragen
echo Welcher Partner soll bereinigt werden?
read partner
echo Wie viel Tage in der Vergangenheit sollen die EMPFANGEN Daten bereinigt werden?
read empfang
echo Wie viel Tage in der Vergangenheit sollen die GESENDETEN Daten bereinigt werden?
read gesendet
clear
# Zeigt an bzw fragt ab, was alles bereinigt werden würde
echo Kann die Bereinugung mit folgenden Daten durchgeführt werden? j/n
find /opt/edi/partners/$partner/Empfang/ -type d -mtime "+"$empfang -exec ls -adltr {} \;
find /opt/edi/partners/$partner/Gesendet/ -type d -mtime "+"$gesendet -exec ls -adltr {} \;
# Input/Output darf nicht bei allen Partner bereinigt werden!
#find /opt/edi/partners/$partner/Input/ -type d -mtime "+"$empfang -exec ls -adltr {} \;
#find /opt/edi/partners/$partner/Output/ -type d -mtime "+"$gesendet -exec ls -adltr {} \;
read antwort
case $antwort in
j*|J*|y*|Y*)# Im Logfile /var/scripts/edi/logs/clean_edidata_by_user*.log werden alle bereinigten Verzeichnisse angegeben
find /opt/edi/partners/$partner/Empfang/ -type d -mtime "+"$empfang -exec ls -adltr {} \; >> "$logfile"
find /opt/edi/partners/$partner/Gesendet/ -type d -mtime "+"$gesendet -exec ls -adltr {} \; >> "$logfile"
# Input/Output darf nicht bei allen Partner bereinigt werden!
#find /opt/edi/partners/$partner/Input/ -type d -mtime "+"$empfang -exec ls -adltr {} \; >> "$logfile"
#find /opt/edi/partners/$partner/Output/ -type d -mtime "+"$gesendet -exec ls -adltr {} \; >> "$logfile"
# Sucht und bereinigt bei allen Parntnern die Dateien im Empfang-Ordner
find /opt/edi/partners/$partner/Empfang/ -type d -mtime "+"$empfang -exec ls -altr {} \;
# Sucht und bereinigt bei allen Parntnern die Dateien im Gesendet-Ordner
find /opt/edi/partners/$partner/Gesendet/ -type d -mtime "+"$gesendet -exec ls -altr {} \;
# Input/Output darf nicht bei allen Partner bereinigt werden!
# Sucht un bereinigt bei allen Parntnern die Dateien im Input-Ordner
#find /opt/edi/partners/$partner/Input/ -type d -mtime "+"$empfang -exec ls -altr {} \;
# Sucht un bereinigt bei allen Parntnern die Dateien im Output-Ordner
#find /opt/edi/partners/$partner/Output/ -type d -mtime "+"$gesendet -exec ls -altr {} \;
# Zusammenfassung was gemacht wurde
clear
echo Output wurde im Logfile clean_edidata_by_userDATUM.log unter /var/scripts/edi/logs/ gespeichert ;;
n*|N*) echo Abbruch. Es wurde nichts gelöscht ;;
*) echo Es wurde nichts gelöscht. Ungültige Eingabe. Bitte j/n eingeben. ;;
esac
find /opt/edi -name 'clean_edidata_by_user-*.log' -type f -mtime +30 -delete
Das sollte so funktionieren, oder?
Ich wünsche allen schöne Ostern!
PS: Wieso kann ich im forum den code nicht wieder so schön formatiert hinenposten? Habe keinen Shellscript-Eintrag gefunden 😮