En un momento, necesitaba insertar con precisión los eventos de registro de Cygwin en el registro de eventos de Windows. Quería que los mensajes en WEVL fueran personalizados, que tuvieran el código de salida correcto, detalles, prioridades, mensajes, etc. Así que creé un pequeño script Bash para encargarme de esto. Aquí está en GitHub, logit.sh .
Algunos extractos:
usage: logit.sh [-h] [-p] [-i=n] [-s] <description>
example: logit.sh -p error -i 501 -s myscript.sh "failed to run the mount command"
Aquí está la parte del contenido del archivo temporal:
LGT_TEMP_FILE="$(mktemp --suffix .cmd)"
cat<<EOF>$LGT_TEMP_FILE
@echo off
set LGT_EXITCODE="$LGT_ID"
exit /b %LGT_ID%
EOF
unix2dos "$LGT_TEMP_FILE"
Aquí hay una función para crear eventos en WEVL:
__create_event () {
local cmd="eventcreate /ID $LGT_ID /L Application /SO $LGT_SOURCE /T $LGT_PRIORITY /D "
if [[ "$1" == *';'* ]]; then
local IFS=';'
for i in "$1"; do
$cmd "$i" &>/dev/null
done
else
$cmd "$LGT_DESC" &>/dev/null
fi
}
Ejecutando el script por lotes y llamando a __create_event:
cmd /c "$(cygpath -wa "$LGT_TEMP_FILE")"
__create_event