Code Source – SentinelLog: extractor.sh

#!/usr/bin/env bash 
# ========================================================================================
# Module d'extraction des journeaux depuis le repertoire specifie
# ========================================================================================

extract_logs(){
    # Recuperation des arguments introduits par l'utilisateur dont le repertoire cible et le nombre de lignes a extraire
    local log_dir="${1}"
    local lines_count="${2}"

    # Activiation de nullglob afin d'eviter des effets indesirables au cas ou le repertoire specifie serait vide, ce qui entrainerait en temps normal une execution litterale de la chaine de caracteres resultante par l'interpreteur 
    shopt -s nullglob
    local log_files=("${log_dir}"/*.log)
    shopt -u nullglob

    # Si aucun fichier n'est present dans le repertoire cible, on genere une erreur
    if [[ ${#log_files[@]} -eq 0 ]]; then 
        echo "[!] AVERTISSEMENT: Aucun fichier log n'a ete trouve dans '${log_dir}'. " >&2
        return 1
    fi 

    # Sinon, suite de l'execution du programme (on genere les x dernieres lignes, soit le nombre par defaut, soit la valeur fournie par l'utilisateur)
    for file in "${log_files[@]}" ; do 
        if [[ -r "${file}" ]] ; then 
            echo "=== LOG SOURCE: ${file} ==="
            tail -n "${lines_count}" "${file}"
        else 
            echo "[!] AVERTISSEMENT: Lecture impossible du fichier '${file}'." >&2
        fi 
    done 
    
    return 0
}

Vous aimerez aussi...