Coding Download Statistik für proFTPd (1 Betrachter)

  • Ersteller des Themas
  • #1

treki

Forum-Mitglied
Black-Market: 0 / 0 / 0
29 Mai 2020
111
17 %
Hallo Zusammen,

ich habe mir ein kleines Bash-Script geschrieben, welches per Cronjob eine Statistik ausgibt, wieviel mal Files (bestimmte Dateiendung) downloadet wurde.
Im Beispiel wird der User ftp-username abgefragt und die Files mit iso Dateiendung im Verzeichnis home/daten/oeffentlich .

Code:
#!/bin/sh

###############################################
####### Download Statistik fuer proFTPd #######
#######       by treki (c) 2020         #######
###############################################

# Muss mit root-Rechten laufen
# Cronjob zBsp immer um Mitternacht  ( sudo crontab -e )
# 59 23 * * * /home/dl.statistik.sh
# proFTPd Log-Datei = xferlog


pfad="/home"                                                                     # Pfad fuer dl.statistik.txt
pfad_zu_xferlog="/var/log/proftpd"                                               # Pfad zum xferlog
zeileninhalt="home/daten/oeffentlich/"                                           # Such-Phrase / Vollstaendiger Pfad bis zum File
user="ftp-username"                                                              # Suche nach FTP User
erweiterung="iso "                                                               # Suche nach Dateierweiterung, der Space nach iso muss enthalten sein

# Datum in dl.statistik.txt schreiben

echo $(date +"%A, %d %B %Y")  >> "$pfad/dl.statistik.txt"

# xferlog holen, filtern und in dl.statistik.txt ausgeben

grep -E "${zeileninhalt}.*$user" "$pfad_zu_xferlog/xferlog" | grep -E "$erweiterung" | sed "s#.*${zeileninhalt}##;s#$erweiterung.*#$erweiterung#" | sort | uniq -c >>"$pfad/dl.statistik.txt"

# Leerschlag/Zeile in dl.statistik.txt schreiben

echo " " >> "$pfad/dl.statistik.txt"

# Verarbeitete Zeilen aus xferlog loeschen

grep -v "${zeileninhalt}.*$user" "$pfad_zu_xferlog/xferlog" > "$pfad/xferlog.tmp"

mv -u "$pfad/xferlog.tmp" "$pfad_zu_xferlog/xferlog"

# Verarbeitete Zeilen aus xferlog.1 loeschen

grep -E "${zeileninhalt}.*$user" "$pfad_zu_xferlog/xferlog.1" | grep -E "$erweiterung" | sed "s#.*${zeileninhalt}##;s#$erweiterung.*#$erweiterung#" | sort | uniq -c >>"$pfad/dl.statistik.txt"

grep -v "${zeileninhalt}.*$user" "$pfad_zu_xferlog/xferlog.1" > "$pfad/xferlog.1.tmp"

mv -u "$pfad/xferlog.1.tmp" "$pfad_zu_xferlog/xferlog.1"

exit
Grüzi miteinand
Treki
 
Zuletzt von einem Moderator bearbeitet:

Skull³

Moderator mit Herz
Community-Team
Teamleitung
Black-Market: 0 / 0 / 0
4 April 2019
4.448
100 %
Kleiner Tipp, mach oben in den Header eine Versionierung rein, sowie ein kleines Changelog, so kann man dann auch immer erkennen welcher Stand das Skript hat, und was man in welcher Version wann geaendert hat. Auch wenn an diesem hier vielleicht nicht mehr viel zu aendern ist, aber koennte ja mal sein.
 
  • Ersteller des Themas
  • #3

treki

Forum-Mitglied
Black-Market: 0 / 0 / 0
29 Mai 2020
111
17 %
mach ich, sobald eine neue version da ist. dann v1.1
Deine Bearbeitung passt.
Danke

PS:
Das
"grüzi Treki" ist von Dir ^^
 
  • Ersteller des Themas
  • #4

treki

Forum-Mitglied
Black-Market: 0 / 0 / 0
29 Mai 2020
111
17 %
Aktuelles Script.

Code:
#!/bin/sh

###############################################
#### Download Statistik V1.0 fuer proFTPd #####
####          by treki (c) 2020           #####
###############################################

# Muss mit root-Rechten laufen
# Cronjob zBsp immer um Mitternacht  ( sudo crontab -e )
# 59 23 * * * /home/dl.statistik.sh >/dev/null 2>&1
# proFTPd Log-Datei = xferlog


pfad="/home"                                                                     # Pfad fuer dl.statistik.txt
pfad_zu_xferlog="/var/log/proftpd"                                               # Pfad zum xferlog
zeileninhalt="home/daten/oeffentlich/"                                           # Such-Phrase / Vollstaendiger Pfad bis zum File
user="ftp-username"                                                              # Suche nach FTP User
erweiterung="iso "                                                               # Suche nach Dateierweiterung

# Datum in dl.statistik.txt schreiben

echo $(date +"%A, %d %B %Y")  >> "$pfad/dl.statistik.txt"

# xferlog holen, filtern und in dl.statistik.txt ausgeben

grep -E "${zeileninhalt}.*$user" "$pfad_zu_xferlog/xferlog" | grep -E "$erweiterung" | sed "s#.*${zeileninhalt}##;s#$erweiterung.*#$erweiterung#" | sort | uniq -c >>"$pfad/dl.statistik.txt"

# Leerschlag/Zeile in dl.statistik.txt schreiben

echo " " >> "$pfad/dl.statistik.txt"

# Verarbeitete Zeilen aus xferlog loeschen

grep -v "${zeileninhalt}.*$user" "$pfad_zu_xferlog/xferlog" > "$pfad/xferlog.tmp"

mv -u "$pfad/xferlog.tmp" "$pfad_zu_xferlog/xferlog"

# Verarbeitete Zeilen aus xferlog.1 loeschen

grep -E "${zeileninhalt}.*$user" "$pfad_zu_xferlog/xferlog.1" | grep -E "$erweiterung" | sed "s#.*${zeileninhalt}##;s#$erweiterung.*#$erweiterung#" | sort | uniq -c >>"$pfad/dl.statistik.txt"

grep -v "${zeileninhalt}.*$user" "$pfad_zu_xferlog/xferlog.1" > "$pfad/xferlog.1.tmp"

mv -u "$pfad/xferlog.1.tmp" "$pfad_zu_xferlog/xferlog.1"

exit
 
  • Ersteller des Themas
  • #5

treki

Forum-Mitglied
Black-Market: 0 / 0 / 0
29 Mai 2020
111
17 %
Habe noch ein weiteres Script geschrieben, welches mehr einstellmöglichkeiten bietet.
Vorallem praktisch, wenn man viele verschiedene Logins und Dateitypen hat. Man kann das eigene Login rausfiltern.

Code:
#!/bin/sh

###############################################
#### Download Statistik V1.1 fuer proFTPd #####
####          by treki (c) 2020           #####
###############################################

# Muss mit root-Rechten laufen
# Cronjob zBsp immer um Mitternacht  ( sudo crontab -e )
# 59 23 * * * /home/dl.statistik.sh >/dev/null 2>&1
# proFTPd Log-Datei = xferlog


pfad="/home"                                                                     # Pfad fuer dl.statistik.txt
pfad_zu_xferlog="/var/log/proftpd"                                               # Pfad zum xferlog
zeileninhalt="home/daten/"                                                       # Such-Phrase / Vollstaendiger Pfad bis zum File
user=" treki "                                                                   # Diesen FTP User ausfiltern
filter="sample"                                                                  # Diesen Begriff ausfiltern
behalten1="part01.rar"                                                           # Diesen Begriff behalten
behalten2="part1.rar"                                                            # Diesen Begriff behalten
behalten3="part001.rar"                                                          # Diesen Begriff behalten
erweiterung=".iso "                                                              # Diese Dateierweiterung verarbeiten
erweiterung1=".rar "                                                             # Diese Dateierweiterung verarbeiten
erweiterung2=".mkv "                                                             # Diese Dateierweiterung verarbeiten
erweiterung3=".flac "                                                            # Diese Dateierweiterung verarbeiten
erweiterung4=".mp3 "                                                             # Diese Dateierweiterung verarbeiten
erweiterung5=".avi "                                                             # Diese Dateierweiterung verarbeiten
erweiterung6=".zip "                                                             # Diese Dateierweiterung verarbeiten

# Leerschlag/Zeile in dl.statistik.txt schreiben

echo " " >> "$pfad/dl.statistik.txt"

# Datum in dl.statistik.txt schreiben

echo $(date +"%A, %d %B %Y")  >> "$pfad/dl.statistik.txt"

# xferlog holen, filtern und in dl.statistik.txt ausgeben

grep -Ev "${zeileninhalt}.*$user" "$pfad_zu_xferlog/xferlog" >"$pfad/dl.statistik2.txt"
grep -Ev "${zeileninhalt}.*$filter" "$pfad/dl.statistik2.txt" >"$pfad/dl.statistik3.txt"

sed -i "s/$behalten1/rarRARrar/" $pfad/dl.statistik3.txt
sed -i "s/$behalten2/rarRARrar/" $pfad/dl.statistik3.txt
sed -i "s/$behalten3/rarRARrar/" $pfad/dl.statistik3.txt
sed -i "/part.*rar/d" $pfad/dl.statistik3.txt
sed -i "s/rarRARrar/rar/" $pfad/dl.statistik3.txt

grep -E "$erweiterung" "$pfad/dl.statistik3.txt" | sed "s#.*${zeileninhalt}##;s#$erweiterung.*#$erweiterung#" >"$pfad/dl.statistik8.txt"
grep -E "$erweiterung1" "$pfad/dl.statistik3.txt" | sed "s#.*${zeileninhalt}##;s#$erweiterung1.*#$erweiterung1#" >>"$pfad/dl.statistik8.txt"
grep -E "$erweiterung2" "$pfad/dl.statistik3.txt" | sed "s#.*${zeileninhalt}##;s#$erweiterung2.*#$erweiterung2#" >>"$pfad/dl.statistik8.txt"
grep -E "$erweiterung3" "$pfad/dl.statistik3.txt" | sed "s#.*${zeileninhalt}##;s#$erweiterung3.*#$erweiterung3#" >>"$pfad/dl.statistik8.txt"
grep -E "$erweiterung4" "$pfad/dl.statistik3.txt" | sed "s#.*${zeileninhalt}##;s#$erweiterung4.*#$erweiterung4#" >>"$pfad/dl.statistik8.txt"
grep -E "$erweiterung5" "$pfad/dl.statistik3.txt" | sed "s#.*${zeileninhalt}##;s#$erweiterung5.*#$erweiterung5#" >>"$pfad/dl.statistik8.txt"
grep -E "$erweiterung6" "$pfad/dl.statistik3.txt" | sed "s#.*${zeileninhalt}##;s#$erweiterung6.*#$erweiterung6#" >>"$pfad/dl.statistik8.txt"

cat "$pfad/dl.statistik8.txt" | sort | uniq -c >>"$pfad/dl.statistik.txt"

# Verarbeitete Zeilen aus xferlog loeschen

grep -E "${zeileninhalt}.*$user" "$pfad_zu_xferlog/xferlog" > "$pfad/xferlog.tmp"

mv -u "$pfad/xferlog.tmp" "$pfad_zu_xferlog/xferlog"

# xferlog.1 holen, filtern und in dl.statistik.txt ausgeben

grep -Ev "${zeileninhalt}.*$user" "$pfad_zu_xferlog/xferlog.1" >"$pfad/dl.statistik2.txt"
grep -Ev "${zeileninhalt}.*$filter" "$pfad/dl.statistik2.txt" >"$pfad/dl.statistik3.txt"

sed -i "s/$behalten1/rarRARrar/" $pfad/dl.statistik3.txt
sed -i "s/$behalten2/rarRARrar/" $pfad/dl.statistik3.txt
sed -i "s/$behalten3/rarRARrar/" $pfad/dl.statistik3.txt
sed -i "/part.*rar/d" $pfad/dl.statistik3.txt
sed -i "s/rarRARrar/rar/" $pfad/dl.statistik3.txt

grep -E "$erweiterung" "$pfad/dl.statistik3.txt" | sed "s#.*${zeileninhalt}##;s#$erweiterung.*#$erweiterung#" >"$pfad/dl.statistik8.txt"
grep -E "$erweiterung1" "$pfad/dl.statistik3.txt" | sed "s#.*${zeileninhalt}##;s#$erweiterung1.*#$erweiterung1#" >>"$pfad/dl.statistik8.txt"
grep -E "$erweiterung2" "$pfad/dl.statistik3.txt" | sed "s#.*${zeileninhalt}##;s#$erweiterung2.*#$erweiterung2#" >>"$pfad/dl.statistik8.txt"
grep -E "$erweiterung3" "$pfad/dl.statistik3.txt" | sed "s#.*${zeileninhalt}##;s#$erweiterung3.*#$erweiterung3#" >>"$pfad/dl.statistik8.txt"
grep -E "$erweiterung4" "$pfad/dl.statistik3.txt" | sed "s#.*${zeileninhalt}##;s#$erweiterung4.*#$erweiterung4#" >>"$pfad/dl.statistik8.txt"
grep -E "$erweiterung5" "$pfad/dl.statistik3.txt" | sed "s#.*${zeileninhalt}##;s#$erweiterung5.*#$erweiterung5#" >>"$pfad/dl.statistik8.txt"
grep -E "$erweiterung6" "$pfad/dl.statistik3.txt" | sed "s#.*${zeileninhalt}##;s#$erweiterung6.*#$erweiterung6#" >>"$pfad/dl.statistik8.txt"

cat "$pfad/dl.statistik8.txt" | sort | uniq -c >>"$pfad/dl.statistik.txt"

# Verarbeitete Zeilen aus xferlog.1 loeschen

grep -E "${zeileninhalt}.*$user" "$pfad_zu_xferlog/xferlog.1" > "$pfad/xferlog.1.tmp"

mv -u "$pfad/xferlog.1.tmp" "$pfad_zu_xferlog/xferlog.1"

# Temporaere Dateien entfernen

rm "$pfad/dl.statistik8.txt"
rm "$pfad/dl.statistik2.txt"
rm "$pfad/dl.statistik3.txt"

exit
 

Dieses Thema betrachten gerade (Benutzer: 0, Gäste: 1)