[Scripting Contest] Meillos Besucherlog

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
RobertDebiannutzer
Beiträge: 385
Registriert: 16.06.2017 09:52:36

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von RobertDebiannutzer » 22.12.2018 17:45:34

@tobo:
Falls Du mich meinst:
Meillo hat geschrieben: ↑ zum Beitrag ↑
19.12.2018 22:08:29
Uebrigens habe ich natuerlich auch awk auf dem System, und Textoutput ist ebenso erlaubt.
Meillo hat geschrieben: ↑ zum Beitrag ↑
22.12.2018 08:39:05
(Es ist egal in welcher Technologie. Die Aktion soll Spass machen; das ist das Wichtigste!)
Und wegen:
eggy hat geschrieben: ↑ zum Beitrag ↑
19.12.2018 21:51:48
"von-Meillo-gewünscht": das Script soll am Ende regelmässig auf Meillos Serverchen laufen,
Ich habe es fürs Terminal geschrieben und "less" dahintergehängt, damit ihr euch - falls ihr wollt - den von meinem Script generierten Output gemütlich anschauen könnt. Ist doch logisch? Falls mein Script irgendwo zum Einsatz kommen sollte, kann man das entfernen und den output woanders hin leiten - die Anzeigebreite muss mann dann halt als Variable statisch konfigurieren.
So oder so will man sich das Ergbnis - wenn ich das richtig verstanden habe - aber ja hauptsächlich anschauen und eigentlich wäre es ja auch gar nicht nötig, so ein script als cronjob oder so ausführen zu lassen?

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von thoerb » 22.12.2018 18:04:39

Deadline wie üblich Sonntagabend? Oder diesmal ohne?
Lass es uns ruhig so machen wie immer: Veroeffentlichungen am Sonntag Abend. Anschliessend kann man die Loesungen diskutieren und noch auf fremden Loesungen aufbauende bessere Loesungen einreichen.

RobertDebiannutzer
Beiträge: 385
Registriert: 16.06.2017 09:52:36

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von RobertDebiannutzer » 22.12.2018 18:10:54

Entschuldigung, tut mir echt leid - Code entfernt... :oops:
(Vielleicht mag ein Moderator die Beiträge löschen, dann ist der Thread wieder aufgeräumt.)

RobertDebiannutzer
Beiträge: 385
Registriert: 16.06.2017 09:52:36

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von RobertDebiannutzer » 23.12.2018 20:32:19

Äh, jetzt? Eigentlich wollte ich warten, bis jemand anderes gepostet hat, aber jetzt ist ja schon längst über 18:00...
Dafür habe ich mein Scriptchen doch nochmal überarbeitet, sodass es nun etwas elaborierter ist:

Code: Alles auswählen

#!/bin/sh
# tested with: bash, dash, busybox ash, busybox sh
# checked with "shellcheck -s bash" / "shellcheck -s dash" (no complaints)

# depends on:
# awk  (package mawk - that is what I have)
# tput (package ncurses-bin) (not needed for option "-o")
# wget (package wget)
# less (package less) (not needed for option "-o")

# options:
#  -o[number] output to stdout instead of piping it to less
#             a number is required to calculate display width

# if output to stdout, use cat
if [ -n "$1" ]; then
	cmd () { cat; }
else
	if [ ! -t 1 ]; then
		# output to less, but no terminal? Seems wrong...
		exit 1
	fi
	cmd () { less; }
fi

# calculate display width
case "$1" in
	'-o'*)
		cols="${1#\-o}"
		;;
	*)
		cols=$(tput cols)
		;;
esac

# get log
log=$(wget -qO- http://tmp.marmaro.de/dfde/dfde-besucher.log)

# calculate length of (date)+(time)+(two spaces)
len=$(echo "$log" | awk 'END{ print length($1)+length($2)+2 }')

# available columns are cols-len
cols=$((cols-len))
# guarantee an arbitrary minimum value for display width
if [ $cols -lt 10 ]; then
	exit 1
fi

# "j = $5/2" is an attempt to ensure that most lines are not too long
# print "##################" if a new day begins
echo "$log" | awk -v cols=$cols '{
	if ($1 != old) {
		print "##################"
	}
	old = $1
	printf "%s %s ", $1, $2
	j = $5/2
	if (j > cols) {
		k = int(j/cols)
		j = cols-length(k)-1
		printf "%sx", k
	}
	for (i=0; i<j && i<cols; i++) {
		printf "-"
	}
	printf "\n"
}' | cmd
Edit: Tippfehler...

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von eggy » 23.12.2018 21:15:04

Ich hätts ja eigentlich mit R gemacht,
aber da ich auf Meillos Serverchen kein R hab rumliegen sehen ;) ,
mal was mit Python:
pastebin/?mode=view&s=40543

Hab ne ähnliche Lösung, wie die vom Dino, aber mit nem etwas anderen Ansatz.
gallery/image/1977
oben Script von TRex, unten meins.

Benutzeravatar
detix
Beiträge: 1702
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von detix » 24.12.2018 10:55:28

Schummeln ist aber erlaubt. Abschreiben und Ideen klauen wird sogar gern gesehen
Na dann klaue ich mal bei @whisper mit Debiangnuplot...

Code: Alles auswählen

cd /tmp
wget http://tmp.marmaro.de/dfde/dfde-besucher.log

echo "set term qt persist size 800,400
set title 'dfde Besucher'
set xlabel \"\nDatum und Uhrzeit\"
set ylabel 'Besucheranzahl'
set xdata time
set timefmt '%Y-%m-%d %H:%M'
set xrange ['2018-12-01':'2018-12-31']
set yrange [0:200]
set clip two
plot ['2018-12-01':'2018-12-31'] 'dfde-besucher.log' using 1:5 with lines" > dfde.plt
Aufruf mit: gnuplot dfde.plt -
Das Minuszeichen am Ende ist nur dafür da um gnuplot nicht zu beenden, nur dann funktioniert zoomen oder das Bild mit den Pfeiltasten verschieben...
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von cronoik » 26.12.2018 01:28:45

Noch ein weiterer Python3 Beitrag (verspaetet und deshalb außer Konkurrenz):
https://gitlab.com/cronoik/dfdescriptin ... Visitorlog
Hilf mit unser Wiki zu verbessern!

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: [Scripting Contest] Meillos Besucherlog

Beitrag von eggy » 26.12.2018 01:51:53

bunt :D

Antworten