44 lines
1.1 KiB
Bash
44 lines
1.1 KiB
Bash
#!/bin/bash
|
|
FACTS_DIR='/etc/ansible/facts.d'
|
|
FACT_FILE="${FACTS_DIR}/zerotier.fact"
|
|
NODE_STATUS=($(zerotier-cli status))
|
|
NETWORKS=$(zerotier-cli listnetworks | tail -n+2)
|
|
|
|
function file_content {
|
|
if [ ! -z "$NETWORKS" ]; then
|
|
network_count=$(echo "$NETWORKS" |wc -l)
|
|
counter=1
|
|
|
|
echo "{"
|
|
echo " \"node_id\":\"${NODE_STATUS[2]}\","
|
|
echo " \"networks\": {"
|
|
while read -r; do
|
|
network=($REPLY)
|
|
echo " \"${network[2]}\": {"
|
|
echo " \"status\":\"${network[5]}\","
|
|
echo " \"device\":\"${network[7]}\""
|
|
|
|
if [ "$counter" -eq "$network_count" ]; then
|
|
echo " }"
|
|
else
|
|
echo " },"
|
|
fi
|
|
((counter++))
|
|
done <<< $NETWORKS
|
|
echo " }"
|
|
echo "}"
|
|
else
|
|
echo "{\"node_id\":\"${NODE_STATUS[2]}\",\"networks\":{}}"
|
|
fi
|
|
}
|
|
|
|
if [ ! -d "$FACTS_DIR" ]; then
|
|
mkdir -p $FACTS_DIR
|
|
fi
|
|
|
|
file_content > $FACT_FILE
|
|
|
|
|
|
# TO-DO
|
|
# Handle different states than "OK". Other statuses can mess up positions.
|