Хочешь следить за доступностью нескольких серверов и записывать статистику? Bash + ping + немного магии - и у тебя реестр доступности в csv или json, пригодный для дальнейшего анализа или графиков.
▪️ Пример списка хостов (hosts.txt):
8.8.8.8
1.1.1.1
bashtex.com
192.168.0.1
▪️ Скрипт пингует все хосты и сохраняет отчет в CSV:
#!/bin/bash
INPUT="hosts.txt"
OUTPUT="ping_log.csv"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
[[ ! -f "$OUTPUT" ]] && echo "timestamp,host,status,latency_ms" > "$OUTPUT"
while read -r host; do
if [[ -n "$host" ]]; then
PING_OUT=$(ping -c 1 -W 1 "$host" 2>/dev/null)
if [[ $? -eq 0 ]]; then
LATENCY=$(echo "$PING_OUT" | awk -F'=' '/time=/{print $4}' | cut -d' ' -f1)
echo "$DATE,$host,UP,$LATENCY" >> "$OUTPUT"
else
echo "$DATE,$host,DOWN,0" >> "$OUTPUT"
fi
fi
done < "$INPUT"
▪️ Пример вывода ping_log.csv:
timestamp,host,status,latency_ms
2025-06-06 12:30:01,8.8.8.8,UP,24.1
2025-06-06 12:30:01,bashtex.com,DOWN,0
▪️ Хочешь в JSON? Добавь это после цикла:
jq -Rn '
[inputs | split(",") | {timestamp: .[0], host: .[1], status: .[2], latency_ms: .[3]}]
' "$OUTPUT" > ping_log.json
(Понадобится jq, либо можно собрать JSON вручную через echo)
BashTex 📱 #bash #utils