From 9c845e4df30351978719caa97131cead77d71d76 Mon Sep 17 00:00:00 2001 From: Jay Stapleton Date: Tue, 27 Feb 2024 14:04:47 -0500 Subject: [PATCH] Upload script to remove old nodes Signed-off-by: Jay Stapleton --- delete-old-nodes/README.md | 6 ++++++ delete-old-nodes/delete-old-nodes.sh | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 delete-old-nodes/README.md create mode 100644 delete-old-nodes/delete-old-nodes.sh diff --git a/delete-old-nodes/README.md b/delete-old-nodes/README.md new file mode 100644 index 0000000..ad9c9d8 --- /dev/null +++ b/delete-old-nodes/README.md @@ -0,0 +1,6 @@ +#Delete Old Nodes +This will clean out nodes which have not been seen longer than the value of `$oldenough` - I've set this to one month. + +I keep my api key in ~/keys/tailnetname.api.key - if you have them elsewhere, you should change the `$apikey` value. + +And set `$tailnet` to the domain of your tailnet. \ No newline at end of file diff --git a/delete-old-nodes/delete-old-nodes.sh b/delete-old-nodes/delete-old-nodes.sh new file mode 100644 index 0000000..1bb27be --- /dev/null +++ b/delete-old-nodes/delete-old-nodes.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +tailnet="tailnetname.com" +apikey=$(<$HOME/keys/${tailnet}.api.key) +oldenough=$(date -I --date="1 month ago") + +curl -s "https://api.tailscale.com/api/v2/tailnet/$tailnet/devices" -u "$apikey:" |jq -r '.devices[] | "\(.lastSeen) \(.id)"' | + while read seen id; do + if [[ $seen < $oldenough ]] + then + echo $id " was last seen " $seen " getting rid of it" + curl -s -X DELETE "https://api.tailscale.com/api/v2/device/$id" -u "$apikey:" + else + echo $id " was last seen " $seen " keeping it" + fi + done \ No newline at end of file