Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
RobertDebiannutzer
- Beiträge: 385
- Registriert: 16.06.2017 09:52:36
Beitrag
von RobertDebiannutzer » 22.12.2018 17:45:34
@tobo:
Falls Du mich meinst:
Meillo hat geschrieben: 19.12.2018 22:08:29
Uebrigens habe ich natuerlich auch awk auf dem System, und Textoutput ist ebenso erlaubt.
Meillo hat geschrieben: 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: 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
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
Beitrag
von RobertDebiannutzer » 22.12.2018 18:10:54
Entschuldigung, tut mir echt leid - Code entfernt...
(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
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
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.
-
detix
- Beiträge: 1705
- Registriert: 07.02.2007 18:51:28
- Wohnort: MK
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
gnuplot...
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!
-
eggy
- Beiträge: 3331
- Registriert: 10.05.2008 11:23:50
Beitrag
von eggy » 26.12.2018 01:51:53
bunt