#!/bin/bash source "${cfg[namespace]}/code/func.sh" json="$(jq -r '.[] | select(.type == "ping") | "\(.label)�\(.data.addr)"' < storage/appconfig/$1.json)" IFS=$'\n' for i in $json; do label="$(awk -F� '{print $1}' <<< "$i")" label_sha="$(shasum <<< "$label" | cut -c 1-16)" addr="$(awk -F� '{print $2}' <<< "$i")" res="$(ping -c 1 -W 1.5 $addr > >(grep icmp_seq | sed -E 's/.*icmp_seq=1//'))" status=$? if [[ "$status" == 0 ]]; then if [[ "$res" == *"time"* ]]; then res_parsed="$(grep -Poh "time=.*?ms" <<< "$res" | sed -E 's/time=//g;s/ms//g' | tr -d ' ')" else res_parsed='#' fi else res_parsed='#' fi unset json_res declare -A json_res json_res[type]="ping" json_res[label]="$label" json_res[status]="$status" json_res[time]="$res_parsed" json_res[res]="$res" json_res[date]="$(date "+%T %d.%m.%y")" json_object json_res >> "storage/data/$(shasum <<< "$label" | cut -c 1-16)" if [[ "$status" == 0 && -f "storage/reports/$label_sha" ]]; then rm "storage/reports/$label_sha" notify="$(jq -r '.[] | select(.label == "'"$label"'").notify[]' < storage/appconfig/$1.json)" notify "$notify" 0 fi done