#!/bin/bash CONTAINER="amnezia-awg2" case "$1" in discovery) # Генерируем LLD JSON со списком IP-адресов клиентов echo -n '{"data":[' first=1 # dump выводит: public_key preshared_key endpoint allowed_ips latest_handshake transfer_rx transfer_tx persistent_keepalive while read -r pub psk endп allowed hand rx tx keep; do [ -z "$allowed" ] && continue ip=$(echo "$allowed" | cut -d'/' -f1) # Убираем двоеточие из пустых полей, если пир не подключался [ "$ip" = "(none)" ] && continue if [ $first -eq 0 ]; then echo -n ','; fi echo -n "{\"{#PEER_IP}\":\"$ip\", \"{#PEER_KEY}\":\"${pub:0:8}\"}" first=0 done < <(docker exec $CONTAINER awg show awg0 dump 2>/dev/null | tail -n +2) echo ']}' ;; rx) # Получаем полученный трафик (в байтах) по IP клиента docker exec $CONTAINER awg show awg0 dump 2>/dev/null | grep "$2/" | awk '{print $6}' ;; tx) # Получаем переданный трафик (в байтах) по IP клиента docker exec $CONTAINER awg show awg0 dump 2>/dev/null | grep "$2/" | awk '{print $7}' ;; handshake) # Время последнего handshake (Unix Timestamp) # Чтобы понять, сколько секунд назад было подключение: Текущее время минус это значение # Если 0 - клиент никогда не подключался echo $(docker exec $CONTAINER awg show awg0 dump 2>/dev/null | grep "$2/" | awk '{print $5}') ;; esac