> * Christian Garbs wrote:
>
>> 1. Wie kriege ich am besten raus, in welchen Newsgruppen am meisten
>> Traffic ist, also wer mir INTL so oft rotieren lässt? Gibt's da
>> ein schönes Statistiktool?
>> Ich kriege zwar täglich eine Status-Mail, die ist aber über die
>> Server-Connections.
>
> Statistik-Tool müsste man sich bauen, Daten sammeln über einen File feed
> in newsfeeds, den man mit dem Parameter W mit den benötigten Datenelementen
> bestückt, in regelmäßigen Abständen flusht und ausliest.
Ich habe seit letzter Woche etwas zusammengeschraubt, das funktioniert
für meine Zwecke, vielleicht kann es ja jemand gebrauchen:
- - - - 8< - - - -
#!/bin/bash
#
# Testimplementierung für das Ermitteln von Newsgroup-Statistiken (wieviele Artikel in welche Gruppen)
#
# see /etc/news/newsfeeds
DB=/var/lib/news/groupstats.db
LOG=/var/log/news/groupstats.log
sql() {
sqlite3 -batch "$DB"
}
init_db_maybe() {
sql <<EOF
CREATE TABLE IF NOT EXISTS posting (
date INTEGER,
site TEXT,
"group" TEXT,
googlespam INTEGER
);
EOF
}
store() {
local site=$1 groups=$2 path=$3
if [[ $path =~
google-groups.googlegroups.com!not-for-mail ]]; then
spam=1
else
spam=0
fi
local IFS=,
for group in $groups; do
printf 'INSERT INTO posting ( date, site, "group", googlespam ) VALUES ( datetime(), "%s", "%s", %d );' "$site" "$group", "$spam"
done | sql
}
init_db_maybe
{
echo "$0 here FRESH START"
while read -r line; do
echo "$line"
store $line
done
} | ts > "$LOG"
- - - - >8 - - - -
1. Das benötigt sqlite3(1) und ts(1)
2. Da GROUP ein reserviertes SQL-Keyword ist, muss man die Spalte in
einem SELECT als "group" angeben.
Der newsfeeds-Eintrag dazu:
groupstats!\
:*,\
:Tc,WsNP:/usr/local/sbin/groupstats
Das ist das erste (aber bestimmt nicht letzte) Mal, dass ich sqlite
nutze. Sehr praktisch, weil man sich nach dem Sammeln die Abfragen
ausdenken kann, man kann ja flexibel SELECTen.
Und das lässt sich bestimmt noch optimieren, indem man nicht für jeden
Artikel das sqlite-Binary aufruft, sondern dauerhaft dort
hineinpiped. Ich hatte aber noch keine Lust, mich mit COMMIT und
"wieviele der Daten bleiben erhalten, wenn die Pipe plötzlich stirbt"
zu beschäftigen.
> Was INTL zur Zeit zum rotieren bringt, ist höchstwahrscheinlich die
> seit September laufende Spam-Welle von Google Groups. Ich habe im
> November ~1,4 Millionen Spams von GoogleGroups abgefangen, in 2317
> Gruppen, überwiegend Big 8.
Das kann ich bestätigen. Nach ein paar Stunden Statistikerfassung war
die aktivste Gruppe bei mir microsoft.public.project, die hatte mehr
Traffic als die Plätze 2-5 zusammen. Nach kurzem Quergucken ist die
Gruppe zu 100% voll mit GoogleGroups-Spam.
Was haben wir es toll in den von mir gelesenen de.-Gruppen.
Weitere Ergebnisse meiner Statistik:
- Das Verhältnis Spam (im Sinne von: "kommt von GoogleGroups") zu
allen anderen Artikeln ist mehr als 7:1. Uff. Das ist übler als
gedacht.
- Ich weiß jetzt, welcher Peer mir manchmal Artikel nach local.misc
spült.
Dazu eine Folgefrage: Wenn ich in der incoming.conf bei diesem Peer
patterns: *,!local.*
setze, um diese Artikel loszuwerden - wie verhält sich das bei
Crossposts? Ich hätte gerne, dass der Artikel in den anderen Gruppen
erscheint, in local.* aber nicht (da will ich nur meine eigenen
lokalen Artikel haben).
Mit der Ehe tauscht eine Frau die Aufmerksamkeit vieler Männer gegen die
Unaufmerksamkeit eines einzigen ein.