Monitorizar puertos via script (bash)

    Vamos a crear un monitor que nos diga si un puesto está en el modo que nos interesa (LISTEN, ESTABLISHED, WAIT)

    Para ello, creamos un fichero standard:

    #!/bin/bash
    TYPE=$(basename "$0" | cut -d. -f1)
    DIR='/tmp'
    LOGS="${DIR}/${TYPE}.log"
    
    PORT=$(echo $TYPE | sed 's/[^0-9]*//g')
    STATE=$(echo $TYPE | awk -F_ '{print $NF}')
    
    [ -f ${LOGS} ] || touch ${LOGS}
    
    while true
    do
    	DATE=`/bin/date '+%d%m%Y_%H%M%S'`
    	NUM=$(netstat -putan | grep :${PORT} | grep ${STATE} | wc -l)
    	[ -z "${NUM}" ] && NUM='0'
    	echo "${DATE} ${TYPE} ${NUM}" >> ${LOGS}
    	sleep 5
    done
    

    Y el script anterior lo copiaremos con el objetivo que aparezca el puerto y el modo en el mismo nombre del script:

    cd /tmp
    cp -rp BASE.sh PORT_8080_LISTEN.sh
    cp -rp BASE.sh PORT_8080_ESTABLISHED.sh
    cp -rp BASE.sh PORT_8080_WAIT.sh
    

    Listo!

    Ahora, cada ejecución nos generará una linea que quedará registrada en un fichero.

    Leave a Reply

    Your email address will not be published. Required fields are marked *