38 lines
1.8 KiB
Bash
Executable File
38 lines
1.8 KiB
Bash
Executable File
#!/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
|