ycliper

Популярное

Музыка Кино и Анимация Автомобили Животные Спорт Путешествия Игры Юмор

Интересные видео

2025 Сериалы Трейлеры Новости Как сделать Видеоуроки Diy своими руками

Топ запросов

смотреть а4 schoolboy runaway турецкий сериал смотреть мультфильмы эдисон
Скачать

TSNotify Series 10 - Windows Task Scheduler Event ID Based Notifier

Life As Software Developer

Maharlikans

programming guides

step by step guides

windows task scheduler notify system written in golang

windows task scheduler event id

task scheduler event id 102

windows event log scheduled task

task scheduler event id 106

windows event id 4702

task scheduler event id 110

task scheduler auto notify email based on the event id

tsnotify series 10

go

schtasks query

schtasks /query /fo CSV /tn

Автор: Maharlikans Code

Загружено: 2020-10-29

Просмотров: 46

Описание: In this TSNotify Series 10, we will learn how to trigger email notification based on the Windows Task Scheduler Event ID, getting prepared the necessary package dependencies such as Cobra CLI with step by step guide in Golang programming language.

#MaharlikansCode
#TSNotifySeries10
#TaskSchedulerEventIDNotify
#Golang
#LifeAsSoftwareDeveloper
#Maharlikans
#FilipinoSoftwareDeveloper

If you go with extra mile for buying me a cup of coffee, I appreciate it guys: https://ko-fi.com/maharlikanscode

Source Codes:
cmd/run.go
// NotifyMe will send an auto email notification to the corresponding recipients
func NotifyMe() {
tableRows := ``
// Search for any matching items from the task lists 'config.yaml' file
for _, t := range taskSchedList {
if len(strings.TrimSpace(t.TaskName)) == 0 {
continue
}

// Decode using the gob encoded bytes
data, _ := DecodePayload(strings.TrimSpace(t.TaskName))
if len(strings.TrimSpace(data.TaskName)) == 0 {
continue
}

// Only send an email when the 'isSent = false'
if !data.IsSent {
// Combine all the list of task schedulers as the email content
tableRows += `tr`
tableRows += `td style='width:100px;border:1px solid #008060; color: #000000;'` + data.TaskName + `/td`
tableRows += `td style='width:100px;border:1px solid #008060; color: #000000;'` + data.TaskNextRunTime + `/td`
tableRows += `td style='width:100px;border:1px solid #008060; color: #000000;'` + data.TaskStatus + `/td`
tableRows += `/tr`

// Remove right away the existing task name
isRemove := SM.Remove(strings.TrimSpace(data.TaskName))
if isRemove {
// Re-add the new task scheduler info to a map but with 'IsSent' = true
// since we can't modify any existing encoded bytes from a collection of map
newTask := SMStatus{
TaskName: strings.TrimSpace(data.TaskName),
TaskNextRunTime: strings.TrimSpace(data.TaskNextRunTime),
TaskStatus: strings.TrimSpace(data.TaskStatus),
Recipients: data.Recipients,
LogDT: data.LogDT,
IsSent: true, // make this as 'true' value to be ignored when adding new updated task info
}
encBytes, err := EncodePayload(newTask)
if err != nil {
color.Magenta(err.Error())
itrlog.Error(err)
}
SM.Add(strings.TrimSpace(data.TaskName), encBytes)
}
// Start email broadcasting now to each recipients
for _, r := range t.Recipients {
if len(strings.TrimSpace(r)) == 0 {
continue
}
if strings.TrimSpace(data.TaskName) == strings.TrimSpace(t.TaskName) {
newEmail := strings.TrimSpace(r)

// Check the SMTP options to which one to be used email notication
var isSendEmail bool = false
var err error

if isSMTPEnabled {
isSendEmail, err = SendMailClassic(tableRows, newEmail, hostName, _emailTemplateTask)
} else {
isSendEmail, err = SendEmailSendGrid(tableRows, newEmail, hostName, _emailTemplateTask)
}

if err != nil {
itrlog.Error(err)
}
if isSendEmail {
msg := `Email sent to: ` + newEmail + ` for the task_name: ` + strings.TrimSpace(t.TaskName)
color.Magenta(msg)
itrlog.Info(msg)
}
}
}
}
}
}
func CheckTaskStatus(taskName, nextRunTime, taskStatus string) (bool, error) {
if len(strings.TrimSpace(taskName)) == 0 {
return false, errors.New("task name is missing")
}
if len(strings.TrimSpace(taskStatus)) == 0 {
return false, errors.New("task status is missing")
}
for _, v := range statusList {
mTS := strings.TrimSpace(strings.ToLower(taskStatus))
mTS = strings.Replace(fmt.Sprint(mTS), `"`, "", -1)
mTS = strings.Replace(fmt.Sprint(mTS), `"`, "", -1)
mVS := strings.TrimSpace(strings.ToLower(v))
if mTS == mVS {
msg := "task_name: " + taskName + " task_status: " + taskStatus
newTask := SMStatus{
TaskName: strings.TrimSpace(taskName),
TaskNextRunTime: strings.TrimSpace(nextRunTime),
TaskStatus: strings.TrimSpace(taskStatus),
Recipients: recipients,
LogDT: time.Now().Add(1 * time.Minute).Unix(), // buffered time to re-send email notification
IsSent: false,
}
encBytes, err := EncodePayload(newTask)
if err != nil {
color.Magenta(msg)
itrlog.Error(err)
}
data, _ := DecodePayload(strings.TrimSpace(taskName))
dTaskName, dTaskStatus := "", ""
isEmailSent, isToAdd := false, false
pTaskStatus := strings.ToLower(strings.TrimSpace(taskStatus))

if len(strings.TrimSpace(data.TaskName)) gt 0 {
dTaskName = strings.TrimSpace(data.TaskName)
dTaskStatus = strings.ToLower(strings.TrimSpace(data.TaskStatus))
isEmailSent = data.IsSent
if isEmailSent {
if dTaskStatus != pTaskStatus {
isEmailSent = false
}
if dTaskStatus == pTaskStatus && time.Now().Unix() gt data.LogDT {
isEmailSent = false
}
}
}
if len(strings.TrimSpace(dTaskName)) == 0 && !isEmailSent {
isToAdd = true
}
if !isEmailSent {
isToAdd = true
}
if len(strings.TrimSpace(taskName)) == 0 {
isToAdd = true
}
if isToAdd {

Source codes omitted due to not enough space.

Не удается загрузить Youtube-плеер. Проверьте блокировку Youtube в вашей сети.
Повторяем попытку...
TSNotify Series 10 - Windows Task Scheduler Event ID Based Notifier

Поделиться в:

Доступные форматы для скачивания:

Скачать видео

  • Информация по загрузке:

Скачать аудио

Похожие видео

© 2025 ycliper. Все права защищены.



  • Контакты
  • О нас
  • Политика конфиденциальности



Контакты для правообладателей: [email protected]