Pada satu titik, saya perlu mendorong peristiwa log secara akurat dari Cygwin ke Windows Event log. Saya ingin pesan dalam WEVL menjadi khusus, memiliki kode keluar yang benar, detail, prioritas, pesan, dll. Jadi saya membuat skrip Bash kecil untuk menangani hal ini. Ini dia di GitHub, logit.sh .
Beberapa kutipan:
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"
Inilah bagian isi file sementara:
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"
Berikut adalah fungsi untuk membuat acara di 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
}
Menjalankan skrip batch dan memanggil __create_event:
cmd /c "$(cygpath -wa "$LGT_TEMP_FILE")"
__create_event