2018-12-03 06:05:37 +00:00
|
|
|
#!/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
|
2018-12-04 01:48:29 +00:00
|
|
|
network_count=$(echo $NETWORKS |wc -l)
|
|
|
|
|
counter=1
|
|
|
|
|
|
2018-12-03 06:05:37 +00:00
|
|
|
echo "{"
|
|
|
|
|
echo " \"node_id\":\"${NODE_STATUS[2]}\","
|
2018-12-04 00:06:35 +00:00
|
|
|
echo " \"networks\": {"
|
2018-12-03 06:05:37 +00:00
|
|
|
while read -r; do
|
|
|
|
|
network=($REPLY)
|
2018-12-04 00:06:35 +00:00
|
|
|
echo " \"${network[2]}\": {"
|
2018-12-08 01:25:12 +00:00
|
|
|
echo " \"status\":\"${network[5]}\","
|
2018-12-07 22:40:48 +00:00
|
|
|
echo " \"device\":\"${network[7]}\""
|
2018-12-04 01:48:29 +00:00
|
|
|
|
|
|
|
|
if [ "$counter" -eq "$network_count" ]; then
|
|
|
|
|
echo " }"
|
|
|
|
|
else
|
|
|
|
|
echo " },"
|
|
|
|
|
fi
|
|
|
|
|
((counter++))
|
2018-12-03 06:05:37 +00:00
|
|
|
done <<< $NETWORKS
|
2018-12-04 00:06:35 +00:00
|
|
|
echo " }"
|
2018-12-03 06:05:37 +00:00
|
|
|
echo "}"
|
|
|
|
|
else
|
2018-12-04 00:06:35 +00:00
|
|
|
echo "{\"node_id\":\"${NODE_STATUS[2]}\",\"networks\":{}}"
|
2018-12-03 06:05:37 +00:00
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if [ ! -d "$FACTS_DIR" ]; then
|
|
|
|
|
mkdir -p $FACTS_DIR
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
file_content > $FACT_FILE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# TO-DO
|
2018-12-07 22:40:48 +00:00
|
|
|
# Handle different states than "OK". Other statuses can mess up positions.
|