#!/bin/bash

#Realizzare uno script che legga da un elenco di IP da un file 
#(il cui nome è passato come parametro) 
#e restituisca su STDOUT l'IP della macchina che ha meno processi in esecuzione

#$1 file con gli ip

# test numero argomenti
 if [[ $# -ne 1 ]] ; then
        echo "Numero argomenti errato"; exit 1;
 fi

# $1 deve essere file standard e con path assoluto 
if ! [[ -f "$1" && "$1" =~ ^/ ]] ; then
	echo "$1 non è un file con path assoluto"
	exit 1
fi

MIN=9999999999;
IPMIN=0;
cat "$1" | ( while read L ; {
	#Controlla se $L è un ip ben formato
	ip="$L"

	if [[ "$ip" =~ ^(([1-9]?[0-9]|1[0-9][0-9]|2([0-4][0-9]|5[0-5]))\.){3}([1-9]?[0-9]|1[0-9][0-9]|2([0-4][0-9]|5[0-5]))$ ]]; then {
	:
	}
	else {
	  echo "$ip is not a valid IP address"
	  continue;
	}
	fi
	
	F=$(mktemp)
	N=$( snmpget -v 1 -c public "$ip" NET-SNMP-EXTEND-MIB::nsExtendOutputFull.\"procCount\" | cut -f4 -d' ' )
	
	if [[ $N -lt $MIN ]] ; then { MIN=$N ; IPMIN="$ip" } ; fi 
} done


echo "$IPMIN"
) #importante avere subshell esplicita per usare variabili fuori dal sottoprocesso che il while crea!