Tag - logs - liczba wpisów 3

Kontynuacja postu: https://blog.cssoft.pl/post/mikrotik-wysylaj-maila-jesli-ktos-duzo-sciaga

System -> Scripts -> [+]
Name = "Download 1G"
Source

Zobacz całość

Mikrotik - Log prefix - Send email Kategoria: MikroTik | Tagi: logs, mikrotik | Autor: Bartłomiej Gałęzia

# BEGIN SETUP
:local scheduleName "Download 10M"
:local emailAddress "biuro@cssoft.pl"
:local startBuf [:toarray [/log find message~"sciaga_10M"]]
:local hostname [/system identity get name]

# END SETUP

# warn if schedule does not exist
:if ([:len [/system scheduler find name="$scheduleName"]] = 0) do={
  /log warning "[LOGMON] ERROR: Schedule does not exist. Create schedule and edit script to match name"
}

# get last time
:local lastTime [/system scheduler get [find name="$scheduleName"] comment]
# for checking time of each log entry
:local currentTime
# log message
:local message
 
# final output
:local output

:local keepOutput false
# if lastTime is empty, set keepOutput to true
:if ([:len $lastTime] = 0) do={
  :set keepOutput true
}


:local counter 0
# loop through all log entries that have been found
:foreach i in=$startBuf do={
 
  :local keepLog true

  :if ($keepLog = true) do={
   
   :set message [/log get $i message]

#   LOG DATE
#   depending on log date/time, the format may be different. 3 known formats
#   format of jan/01/2002 00:00:00 which shows up at unknown date/time. Using as default
    :set currentTime [ /log get $i time ]
#   format of 00:00:00 which shows up on current day's logs
   :if ([:len $currentTime] = 8 ) do={
     :set currentTime ([:pick [/system clock get date] 0 11]." ".$currentTime)
    } else={
#     format of jan/01 00:00:00 which shows up on previous day's logs
     :if ([:len $currentTime] = 15 ) do={
        :set currentTime ([:pick $currentTime 0 6]."/".[:pick [/system clock get date] 7 11]." ".[:pick $currentTime 7 15])
      }
   }
    
#   if keepOutput is true, add this log entry to output
   :if ($keepOutput = true) do={
     :set output ($output.$currentTime." ".$message."\r\n")
   }
#   if currentTime = lastTime, set keepOutput so any further logs found will be added to output
#   reset output in the case we have multiple identical date/time entries in a row as the last matching logs
#   otherwise, it would stop at the first found matching log, thus all following logs would be output
    :if ($currentTime = $lastTime) do={
     :set keepOutput true
     :set output ""
   }
  }

#   if this is last log entry
  :if ($counter = ([:len $startBuf]-1)) do={
#   If keepOutput is still false after loop, this means lastTime has a value, but a matching currentTime was never found.
#   This can happen if 1) The router was rebooted and matching logs stored in memory were wiped, or 2) An item is added
#   to the removeThese array that then ignores the last log that determined the lastTime variable.
#   This resets the comment to nothing. The next run will be like the first time, and you will get all matching logs
   :if ($keepOutput = false) do={
#     if previous log was found, this will be our new lastTime entry      
     :if ([:len $message] > 0) do={
        :set output ($output.$currentTime." ".$message."\r\n")
      }
    }
  }
  :set counter ($counter + 1)
}

# If we have output, save new date/time, and send email
if ([:len $output] > 0) do={
  /system scheduler set [find name="$scheduleName"] comment=$currentTime
  /tool e-mail send to="$emailAddress" subject="[$hostname] Alert [$scheduleName] - $currentTime" body="$output"
  /log info "[LOGMON] New logs found, send email"
}

https://wiki.mikrotik.com/wiki/Monitor_logs,_send_email_alert_/_run_script

https://wiki.mikrotik.com/wiki/Manual:Scripting

https://wiki.mikrotik.com/wiki/Manual:Scripting-examples

Mikrotik - Logs backup - Local, FTP, e-mail Kategoria: MikroTik | Tagi: backup, logs, mikrotik | Autor: Bartłomiej Gałęzia

Skrypt do zrzucania logów do pliku + wysyłanie ich na maila i FTP

System -> Scripts -> [+]
Name = "Logs_backup"
Source
 # months array
 :local months ("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");

 # get time
 :local ts [/system clock get time]
 :set ts ([:pick $ts 0 2].[:pick $ts 3 5].[:pick $ts 6 8])

 # get Date
 :local ds [/system clock get date]

 # convert name of month to number
 :local month [ :pick $ds 0 3 ];
 :local mm ([ :find $months $month -1 ] + 1);
 :if ($mm < 10) do={ :set mm ("0" . $mm); }

 # set $ds to format YYYY-MM-DD
 :set ds ([:pick $ds 7 11] . $mm . [:pick $ds 4 6])

 # file name for logs backup - servername-YYYYMMDD-HHMMSS_logs.txt
 :local fname ([/system identity get name]."-".$ds."-".$ts."_logs.txt")
 :local sfname ("/".$fname1)

 # backup logs
 /log print file=$sfname1
 :log info message="Logs backup finished (1/1).";

# ftp server
 :local ftphost "192.168.1.1"
 :local ftpuser "ftp_user"
 :local ftppassword "ftp_password"
 :local ftppath "/folder/subfolder/"

 # upload the system backup
 :log info message="Uploading logs backup (1/1)."
 /tool fetch address="$ftphost" src-path=$sfname1 user="$ftpuser" mode=ftp password="$ftppassword" dst-path="$ftppath/$fname" upload=yes

 # delay time to finish the upload - increase it if your backup file is big
 #:delay 30s;

:local mname ([/system identity get name]." - Backup logs - ".$ds)
:local mailTo "admin@domain.com"
:local emailbody ("Plik z backupem logow: ".$sfname1)

/tool e-mail send subject=$mname to=$mailTo body=$emailbody

Następnie należy dodać skrypt do Schedulera

System -> Scheduler -> [+]
Name = "Logs_backup"
Interval ="1d 00:00:00"
On Event
/system script run Logs_backup

Wyszukaj

Zapisz się do newsletera