#!/usr/bin/bash # # collect messages from reporter and drop them into log files # set -eu port=1234 #logdir="/var/log/collector" logdir="/tmp/collector" mkdir -vp "$logdir" nc -k -l -u -p "$port" | while read line ; do sndr="${line%% *}" msg="${line#* }" if [[ "$sndr" =~ [a-z0-9]+ ]] ; then if [[ "$msg" =~ ^-------\ .+\ -------$ ]] ; then echo "$(date --rfc-3339=seconds) → Report from '$sndr' received." echo "$msg" > "$logdir/$sndr" else echo "$msg" >> "$logdir/$sndr" fi fi done