Added support for IPv6 checks
This commit is contained in:
		
							parent
							
								
									0d344b456f
								
							
						
					
					
						commit
						44762d6443
					
				
					 3 changed files with 26 additions and 4 deletions
				
			
		| 
						 | 
					@ -9,12 +9,15 @@ DEBUG=false
 | 
				
			||||||
PORT_RANGE="1-65535"
 | 
					PORT_RANGE="1-65535"
 | 
				
			||||||
NMAP_ARGS=""
 | 
					NMAP_ARGS=""
 | 
				
			||||||
KNOWN_PORTS=()
 | 
					KNOWN_PORTS=()
 | 
				
			||||||
 | 
					IPv=""
 | 
				
			||||||
while [[ $# -gt 0 ]]; do
 | 
					while [[ $# -gt 0 ]]; do
 | 
				
			||||||
	case $1 in
 | 
						case $1 in
 | 
				
			||||||
		-h|--host)		HOST="$2"; shift;;
 | 
							-h|--host)		HOST="$2"; shift;;
 | 
				
			||||||
		-p|--portrange)	PORT_RANGE="$2"; shift;;
 | 
							-p|--portrange)	PORT_RANGE="$2"; shift;;
 | 
				
			||||||
		-k|--known)		KNOWN_PORTS+=($2); shift;;
 | 
							-k|--known)		KNOWN_PORTS+=($2); shift;;
 | 
				
			||||||
		-d|--debug) 	DEBUG=true;;
 | 
							-d|--debug) 	DEBUG=true;;
 | 
				
			||||||
 | 
					        -4|--ipv4)      IPv="";;
 | 
				
			||||||
 | 
					        -6|--ipv6)      IPv="-6";;
 | 
				
			||||||
		-i|--input)
 | 
							-i|--input)
 | 
				
			||||||
			INPUT="$2"
 | 
								INPUT="$2"
 | 
				
			||||||
			if [ ! -f "$INPUT" ]; then
 | 
								if [ ! -f "$INPUT" ]; then
 | 
				
			||||||
| 
						 | 
					@ -28,6 +31,7 @@ while [[ $# -gt 0 ]]; do
 | 
				
			||||||
			echo "--host HOSTNAME/IP: Host that shall be scanned by nmap"
 | 
								echo "--host HOSTNAME/IP: Host that shall be scanned by nmap"
 | 
				
			||||||
			echo "--portrange RANGE:  Ports that shall be scanned (nmap format)"
 | 
								echo "--portrange RANGE:  Ports that shall be scanned (nmap format)"
 | 
				
			||||||
			echo "--known PORTNUMBER: Port number that is expected to be open"
 | 
								echo "--known PORTNUMBER: Port number that is expected to be open"
 | 
				
			||||||
 | 
								echo "--ipv6: Use IPv6 for the scan (IPv4 if not specified)"
 | 
				
			||||||
			exit 0
 | 
								exit 0
 | 
				
			||||||
			;;
 | 
								;;
 | 
				
			||||||
		*)
 | 
							*)
 | 
				
			||||||
| 
						 | 
					@ -74,7 +78,7 @@ function runNmap {
 | 
				
			||||||
		done < $INPUT
 | 
							done < $INPUT
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		local $cmd
 | 
							local $cmd
 | 
				
			||||||
		cmd="nmap $portrange $NMAP_ARGS -- $HOST"
 | 
							cmd="nmap $portrange $IPv $NMAP_ARGS -- $HOST"
 | 
				
			||||||
		log "$cmd"
 | 
							log "$cmd"
 | 
				
			||||||
		while read -r line; do
 | 
							while read -r line; do
 | 
				
			||||||
			parseLine "$line"
 | 
								parseLine "$line"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,7 @@ object CheckCommand "nmap" {
 | 
				
			||||||
	import "ipv4-or-ipv6"
 | 
						import "ipv4-or-ipv6"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	command = [ "/home/nagios/check_nmap.sh/check_nmap.sh" ]
 | 
						command = [ "/home/nagios/check_nmap.sh/check_nmap.sh" ]
 | 
				
			||||||
	timeout = 10m
 | 
						timeout = 12h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	arguments = {
 | 
						arguments = {
 | 
				
			||||||
		"--host" = {
 | 
							"--host" = {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,13 +1,31 @@
 | 
				
			||||||
apply Service "nmap" {
 | 
					apply Service "nmap4" {
 | 
				
			||||||
	import "generic-service"
 | 
						import "generic-service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	check_command = "nmap"
 | 
						check_command = "nmap"
 | 
				
			||||||
	check_interval = 24h
 | 
						check_interval = 24h
 | 
				
			||||||
	retry_interval = 2h
 | 
						retry_interval = 2h
 | 
				
			||||||
 | 
						vars.notification_interval = 1d
 | 
				
			||||||
 | 
						vars.nmap_ipv4 = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (k => v in host.vars.nmap) {
 | 
						for (k => v in host.vars.nmap) {
 | 
				
			||||||
		vars["nmap_" + k] = v
 | 
							vars["nmap_" + k] = v
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	assign where host.vars.nmap != null
 | 
						assign where host.vars.nmap != null && (host.vars.nmap.ipv6_only == null || host.vars.nmap.ipv6_only == false)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					apply Service "nmap6" {
 | 
				
			||||||
 | 
						import "generic-service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						check_command = "nmap"
 | 
				
			||||||
 | 
						check_interval = 24h
 | 
				
			||||||
 | 
						retry_interval = 2h
 | 
				
			||||||
 | 
						vars.notification_interval = 1d
 | 
				
			||||||
 | 
						vars.nmap_ipv6 = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (k => v in host.vars.nmap) {
 | 
				
			||||||
 | 
							vars["nmap_" + k] = v
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assign where host.vars.nmap != null && (host.vars.nmap.ipv4_only == null || host.vars.nmap.ipv4_only == false)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue