diff --git a/lmn-client.yml b/lmn-client.yml index 11f40b3..0167843 100644 --- a/lmn-client.yml +++ b/lmn-client.yml @@ -85,6 +85,10 @@ - lmn_security tasks: + - name: Timestamp successfull ansible run + ansible.builtin.shell: date --iso-8601=seconds >> /home/ansible/.ansible/stamps + changed_when: False + ## Temporary fixes and quirks: - name: Fix 8086:4909 external graphics card replace: diff --git a/roles/lmn_fvs/files/reporter b/roles/lmn_fvs/files/reporter index fff637c..18f0eca 100755 --- a/roles/lmn_fvs/files/reporter +++ b/roles/lmn_fvs/files/reporter @@ -7,19 +7,27 @@ set -eu sendto="collector.steinbeis.schule 1234" +n=0 cmds=( 'uname -a' - 'ls -d --full-time /home/ansible/.ansible/tmp/' - 'ip link | sed -nE -e "s/^[2-9]: (\S+): .+/\1/p" -e "s/.+ether ([0-9a-f:]+) .+/\1/p" | paste -d " " - -' + 'tail -1 /home/ansible/.ansible/stamps' 'ip route list default' + 'ip link show | \ + sed -nE -e "s/^[2-9]: (\S+): .+/\1/p" -e "s/.+ether ([0-9a-f:]+) .+/\1/p" | \ + paste -d " " - -' ) # 'w' # 'uptime' +# 'ls -d --full-time /home/ansible/.ansible/tmp/' # 'ip addr show' # 'apt list --upgradeable -o Apt::Cmd::Disable-Script-Warning=true' -r="$HOSTNAME: ------- $(date --rfc-3339=seconds) ------- -$(for c in "${cmds[@]}" ; do echo "$c"; eval "$c" | sed 's/^/ /' ; done | sed "s/^/$HOSTNAME: /") +r="$HOSTNAME ------- $(date --rfc-3339=seconds) ------- +$(for c in "${cmds[@]}" ; do + n=$(( n + 1 )) + echo -n "$n" + eval "$c" | sed 's/^/\t/' +done | sed "s/^/$HOSTNAME /") ## -------------------------------------------------" echo "$r" | nc -w 1 -u $sendto diff --git a/tools/collector b/tools/collector index b8073b5..fc855c8 100755 --- a/tools/collector +++ b/tools/collector @@ -11,11 +11,11 @@ logdir="/tmp/collector" mkdir -vp "$logdir" nc -k -l -u -p "$port" | while read line ; do - sndr="${line%%:*}" - msg="${line#*: }" + sndr="${line%% *}" + msg="${line#* }" if [[ "$sndr" =~ [a-z0-9]+ ]] ; then if [[ "$msg" =~ ^-------\ .+\ -------$ ]] ; then - echo "$(date --rfc-3339=seconds) → Message from '$sndr' received." + echo "$(date --rfc-3339=seconds) → Report from '$sndr' received." echo "$msg" > "$logdir/$sndr" else echo "$msg" >> "$logdir/$sndr" diff --git a/tools/emitter b/tools/emitter index 1347bc1..aafbd7a 100755 --- a/tools/emitter +++ b/tools/emitter @@ -29,14 +29,14 @@ find_outdated(){ while IFS= read -r -d '' file ; do running=$(( running + 1 )) $debug && echo -n "Processing host '$file' with IP address " - d="$(sed -nE "s/\s+drwx.+([0-9]{4}-[0-9]{2}-[0-9]{2} \S+).*/\1/p" "$file" | head -1)" - if [[ -z "$d" ]] || [[ $(date --date="$d" +%s) -lt $(date --date="$git_date" +%s) ]] ; then + d="$(sed -nE "s/^2\s+(\S.+)$/\1/p" "$file")" + if [[ -z "$d" ]] || \ + [[ $(date --date="$d" +%s) -lt $(date --date="$git_date" +%s) ]] ; then r='([0-9]{1,3}\.){3}[0-9]{1,3}' - ipa="$(sed -nE "s|^\s+default via.+ src ($r) metric.+|\1|p" "$file" | head -1)" + ipa="$(sed -nE "s/^3\s+default via.+ src ($r) metric.+/\1/p" "$file")" if [[ -z "$ipa" ]] ; then - # FIXME: Outdated report format, trying fallback: - ipa="$(grep -E "\s+2: en" -A3 "$file" | \ - sed -nE "s|.+inet (10\.190\.[[:digit:]]{1,3}\.[[:digit:]]{1,3})/.+|\1|p")" + # FIXME: Outdated report format, try fallback: + ipa="$(sed -nE "s|^.+default via.+ src ($r) metric.+|\1|p" "$file" | head -1)" fi $debug && echo "'$ipa'." if ! grep -q "$ipa" "$dir/${git_date//T*/}" ; then