Catching up with current successes
This commit is contained in:
57
precommit-hooks/find-bad-ipam
Executable file
57
precommit-hooks/find-bad-ipam
Executable file
@@ -0,0 +1,57 @@
|
||||
#!/usr/bin/bash
|
||||
|
||||
# File: find-bad-ipam
|
||||
#
|
||||
# Description: This file finds bad IPAM entries in an inventory.
|
||||
#
|
||||
# Package: AniNIX/Ubiqtorate
|
||||
# Copyright: WTFPL
|
||||
#
|
||||
# Author: DarkFeather <ircs://aninix.net:6697/DarkFeather>
|
||||
|
||||
file="examples/msn0.yml"
|
||||
|
||||
function findBadTerm() {
|
||||
### Check for a term to be duplicated.
|
||||
# param file: the file
|
||||
# param term: the term to search for duplicates
|
||||
file="$1"
|
||||
term="$2"
|
||||
results="$(grep "$term:" "$file" | sed 's/\s\+'"$term"':\s*//' | sort)"
|
||||
|
||||
if ! diff <(echo "$results") <(echo "$results" | uniq); then
|
||||
echo "Some ${term^^} entries are duplicated. Search for the above terms in your inventory and deduplicate."
|
||||
exit 2
|
||||
fi
|
||||
}
|
||||
|
||||
function Usage() {
|
||||
### Helptext
|
||||
# param retcode: what to return
|
||||
retcode="$1"
|
||||
echo "Usage: $0 -f SOMEFILE"
|
||||
echo " $0 -h"
|
||||
echo "Add -v for verbosity."
|
||||
exit $retcode
|
||||
}
|
||||
|
||||
while getopts 'f:hv' OPTION; do
|
||||
### Parse arguments
|
||||
case "$OPTION" in
|
||||
f) file="$OPTARG" ;;
|
||||
h) echo "Find bad IPAM entries in an inventory." ; Usage 0 ;;
|
||||
v) set -x ;;
|
||||
*) Usage 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Sanity check
|
||||
if [ -z "$file" ] || [ ! -f "$file" ]; then
|
||||
echo Need an inventory to process.
|
||||
Usage 3;
|
||||
fi
|
||||
|
||||
# Check for the unique attributes.
|
||||
for i in ip vnc mac; do
|
||||
findBadTerm "$file" "$i"
|
||||
done
|
Reference in New Issue
Block a user