expertenaustausch > linux.debian.user.german

A. Söldner (03.04.2020, 12:20)
Hallo Liste,

habe ein kl. Shell-Script welches die logs der einzelnen Domainen
ausliest und mir den Traffic in MB ausgibt.

Funktioniert auch soweit. Habe mir noch einige Aliase definiert, zwecks
besserer Übersicht habe ich die Einträge aus dem Script (vorläufig)
entfernt.

Suche die Möglichkeit die Ausgabe im Script per Mail zu verschicken.

Ich bekomme es irgend wie nicht hin, scripten ist und war noch nie
"meine" Disziplin ;-)

Danke!
A.

OK, hier der (gekürzte) Code :

#!/bin/bash
#analyse_log_24Std [logdatei]
#analyse_log_24Std [logdatei] [von] [bis]

declare -A ALIASE
ALIASE['test1']="bla.bub-access.log"

log_path="/var/customers/logs/"
log_file=$1
von=$2
bis=$3

if [ ${ALIASE[$log_file]+_} ]; then log_file="${ALIASE[$log_file]}" ; fi

domains=`awk '{print substr($4, 2, 11)}' $log_path$log_file | sort | uniq`

for domain in $domains
do
# echo "$domain"
if [ -z "$von" ] && [ -z "$bis" ]
then
        sum=$(grep "$domain" $log_path$log_file | awk
'{SUM+=$10}END{print SUM/1024/1024}')
else
        jahr=${domain:7:4}
        sum=$(grep "$domain" $log_path$log_file | sed -rne
"/$jahr\:$von\:/,/$jahr\:$bis\:/ p" | awk '{SUM+=$10}END{print
SUM/1024/1024}')
#       echo $sum
fi
echo "Total bandwidth for domain  is $sum MB"
done
A. Söldner (03.04.2020, 13:00)
Hallo Hilmer, hallo Liste,

hatte ich auch schon einmal so, nur dann erhalte ich für jede Ausgabe
eine Mail.

Consolenausgabe:
Total bandwidth for 01/Apr/2020  is 3836.28 MB
Total bandwidth for 02/Apr/2020  is 2501.26 MB
Total bandwidth for 03/Apr/2020  is 701.935 MB
Total bandwidth for 30/Mar/2020  is 3096.15 MB
Total bandwidth for 31/Mar/2020  is 3564.09 MB

Die Ausgabe kann ich noch nach Zeitraum abfragen, alles Bestens.

Wie bekomme ich alle Ausgaben in eine(r) Mail?

Gruß
A.

Am 03.04.2020 um 12:20 schrieb Hilmar Preuße:
[..]
A. Söldner (03.04.2020, 13:40)
An welcher Stelle muss ich dein Code einfügen?

Bin absolut programmier-blond :-(

Danke!

A.

Am 03.04.2020 um 13:22 schrieb Hilmar Preuße:
[..]
A. Söldner (03.04.2020, 14:40)
> Bin absolut programmier-blond :-(

Na, so sah das aber nicht aus im Skript.

Erwischt ;-)

Das Script hat mir jemand gebastelt ..., wirklich, ich bin absolut
"hellblond".

Fehlermeldung:
/Scripte/test11: line 35: unexpected EOF while looking for matching `"'

Line 35 wäre:
echo  "Total bandwidth for $domain  is $sum MB""| mailx -s test bla"

Was wird gesucht: ' oder " oder ` ??

Ich hasse bash ;-)

Unten nochmal das angepasste Script.

Gruß
A.

#!/bin/bash
set -e
    export LC_ALL=C
    test -t 1 || exec &> >(mail -s "$SUBJECT" "${RECIPIENTS[@]")
#analyse_log_24Std [logdatei]
#analyse_log_24Std [logdatei] [von] [bis]
declare -A ALIASE
ALIASE['test1']="bla.bub-access.log"
log_path="/var/customers/logs/"

log_file=$1
von=$2
bis=$3

if [ ${ALIASE[$log_file]+_} ]; then log_file="${ALIASE[$log_file]}" ; fi

domains=`awk '{print substr($4, 2, 11)}' $log_path$log_file | sort | uniq`

for domain in $domains
do
# echo "$domain"
if [ -z "$von" ] && [ -z "$bis" ]
then
        sum=$(grep "$domain" $log_path$log_file | awk
'{SUM+=$10}END{print SUM/1024/1024}')
else
        jahr=${domain:7:4}
        sum=$(grep "$domain" $log_path$log_file | sed -rne
"/$jahr\:$von\:/,/$jahr\:$bis\:/ p" | awk '{SUM+=$10}END{print
SUM/1024/1024}')
#       echo $sum
fi

echo  "Total bandwidth for $domain  is $sum MB""| mailx -s test bla"
done

Am 03.04.2020 um 13:41 schrieb Heiko Schlittermann:
[..]
Christian Knoke (03.04.2020, 16:10)
A. Söldner schrieb am 03. Apr um 14:37 Uhr:

> Was wird gesucht: ' oder " oder ` ??
> Ich hasse bash ;-)


~$ man bash | grep -A 76 QUOTING

;-)
Ähnliche Themen