Tại một thời điểm tôi cần đẩy chính xác các sự kiện nhật ký từ Cygwin sang nhật ký Sự kiện Windows. Tôi muốn các thông điệp trong WEVL được tùy chỉnh, có mã thoát chính xác, chi tiết, ưu tiên, tin nhắn, v.v. Vì vậy, tôi đã tạo một tập lệnh Bash nhỏ để xử lý việc này. Đây là trên GitHub, logit.sh .
Một số trích đoạn:
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"
Đây là phần nội dung tập tin tạm thời:
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"
Đây là một chức năng để tạo các sự kiện trong 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
}
Thực thi tập lệnh bó và gọi vào __create_event:
cmd /c "$(cygpath -wa "$LGT_TEMP_FILE")"
__create_event