Working with many docker containers on one machine I needed to get list of free IP addresses in specific docker network. This is the way:
comm -3 <(nmap -sL 172.30.0.10/29 | awk '/Nmap scan report/{print $NF}' | sort) <(nmap -sn 172.30.0.10/29 | awk '/Nmap scan report/{print $NF}' | sort) | sort -V 172.30.0.9 172.30.0.10 172.30.0.11 172.30.0.12 172.30.0.13 172.30.0.14 172.30.0.15
Let me explain.
This generates the list of IPs in subnetwork:
nmap -sL 172.30.0.10/29 | awk '/Nmap scan report/{print $NF}' 172.30.0.8 172.30.0.9 172.30.0.10 172.30.0.11 172.30.0.12 172.30.0.13 172.30.0.14 172.30.0.15
This generates list of used IPs in subnetwork:
nmap -sn 172.30.0.10/29 | awk '/Nmap scan report/{print $NF}' 172.30.0.8
The comm compares two lists and suppress common lines
comm - compare two sorted files line by line -3 suppress column 3 (lines that appear in both files)
One more example:
cat ip_pool.txt 172.30.0.8 172.30.0.9 172.30.0.10 172.30.0.11 172.30.0.12 172.30.0.13 172.30.0.14 172.30.0.15 cat ip_used.txt 172.30.0.8 172.30.0.10 comm -3 <(cat ip_pool.txt | sort) <(cat ip_used.txt | sort) | sort -V 172.30.0.9 172.30.0.11 172.30.0.12 172.30.0.13 172.30.0.14 172.30.0.15
My main background for a recent years is MySQL DEV/DBA engineer but I’m also participating in wider range of tasks which could be likely called as DataOps/DevOps tasks. You can see my online CV here: http://catyellow.net