Problema con el script Bash en FreeBSD

Problema con el script Bash en FreeBSD

Tengo el siguiente script bash configurado para ejecutarse cada hora a través de cron como usuario root. El propósito de este script es enviarnos un correo electrónico cuando los archivos se hayan cargado en nuestro servidor SFTP y enviarnos los inicios de sesión. Aquí está el guión

    build_report()  {
    # This function builds the report header and gets the list of files

    #Get all the files under /home/SFTP
    local f=($( find "/home/SFTP" -type f | tr " " "_" ))

    echo
    echo "********************************************";
    echo "*************** FILE REPORT ****************";
    echo "********************************************";
    echo "****  SEARCHING THROUGH SFTP FOLDERS  ******";
    echo "********************************************";
    echo "* IF I FIND SOMETHING, I WILL LIST IT HERE *";
    echo "********************************************";
    echo "********************************************";
    echo "GENERATED ON $TIMESTAMP                     ";

    echo
    echo
    #Loop through all the files and list list them
    for i in " ${f[@]}"
    do
            echo $i
    done
    }

    sftp_log() {
    #This function checks the /var/log/auth.log file for sessions 

    echo "*****************Begin Access Log*********************"
    cat /var/log/auth.log|grep -E "interactive/pam"

    }

    TIMESTAMP=$(date)
    files=$(find "/home/SFTP" -type f | tr " " "_")

     #If there are files present create the report, email it and log we found something.
    #Else, log we didn't find anything 
    if [ "$files" != "" ]; then
            { build_report && sftp_log; } | awk '{print $0,"\n"}' | mail -s "report" [email protected]
             echo $TIMESTAMP " Files found. Email Sent">>filereport.log
    else
            echo $TIMESTAMP " No files found" >>filereport.log
    fi

    exit 0

El problema llega todos los días a las 8 a.m. Aquí un ejemplo de lo que sucede

7 a.m.: Los archivos están presentes. El informe se envía correctamente con la salida de ambas funciones.

8 a.m.: Los mismos archivos están presentes. El informe se envía solo con el resultado de la función build_report

9 a.m.: Los mismos archivos están presentes. El informe se envía solo con el resultado de la función build_report

10 a.m.: los archivos aún están presentes (podrían ser archivos nuevos agregados, podría ser el mismo archivo). Se envía un correo electrónico con la salida de ambas funciones correctamente y el inicio de sesión que ocurrió entre 8-9 ahora está presente.

Configuré auth.log para que rotara una vez a la semana para asegurarme de que no hubiera algún tipo de problema de rotación/bloqueo de archivos. Además, si hay archivos presentes a las 7 a. m., obtenemos un informe correcto en ese momento.

¿Algunas ideas? Mi capacidad de scripting en bash es, en el mejor de los casos, tosca, por lo que cualquier idea es bienvenida.

Respuesta1

Ponga un echo $BASH para ver qué sucede, es posible que, a menos que le diga explícitamente a Crown que use bash, esté usando sh, y no estoy seguro de que agregar [@] esté en FreeBSD sh.

información relacionada