Script gửi mail khi có người login router switch Cisco

Script để thông báo qua email khi có người login vào router, switch:

Các step làm:

- Enable lệnh ghi lại log khi có người login thành công

- So sánh thời điểm chạy script với các thời điểm login, chỉ lấy những thời điểm 5 phút về trước

- Gửi mail cho admin

- Đặt cronjob 5 phút 1 lần thực hiện

import re
import datetime
import netmiko
import calendar

import smtplib

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

############trên switch cần gõ các lệnh này trước##########
#login on-success log every 1
##########################################################
#################SEND MAIL FUNCTION###############
  def sendMail(output,dstMail):
 if(output!=''):
  msg = MIMEMultipart()
  msg['From'] = 'haiedubit@outlook.com'
  msg['To'] = dstMail
  msg['Subject'] = "WARNING CÓ NGƯỜI LOGIN THIẾT BỊ"
  msg.attach(MIMEText(output, 'plain'))
  text=msg.as_string()
  s = smtplib.SMTP(host='smtp-mail.outlook.com')
  s.starttls()
  s.login('haiedubit@outlook.com', 'edubit@bnn')
  s.sendmail(
    "haiedubit@outlook.com",dstMail,text)
  s.quit()
#######################################
sw1 = {
    'device_type': 'cisco_ios',
    'ip': '10.1.2.3',
    'username': 'monitor',
    'password': 'abc@123',
    'secret': 'abc@123',
    'verbose': False,
}
ip_of_ubuntu = '10.64.1.100'

net_connect = netmiko.ConnectHandler(**sw1)
net_connect.enable()
get_time1 = net_connect.send_command_timing('show logging | inc LOGIN-5-LOGIN_SUCCESS')

###Lưu vào file tạm#####
f=open('temp1.txt','w')
f.write(get_time1)
f.close()

###Đọc file tạm trên####
f=open('temp1.txt','r')
lines=f.readlines()
for line in lines:
# các line có dạng [user:admin] login at 14:36:05 ICT Tue Apr 11 2023
 time_log = re.findall(r'(?:at) (\d\d:\d\d:\d\d).*(\w\w\w \w\w\w \d\d\ \d\d\d\d)',line)
 user_login = re.findall(r'\[user:.*\]',line)
 
 for time1 in time_log:
 ####Lấy thời gian login trong dòng text trên####
  hour=time1[0].split(":")[0]
  minute=time1[0].split(":")[1]
  second=time1[0].split(":")[2]
  
  day=time1[1].split(" ")[2]
  month_abbr=time1[1].split(" ")[1] ##Month in name Apr, May Jul...
  mon_number=list(calendar.month_abbr).index(month_abbr)#Quy tháng ra number, ví dụ Apr là 4
  year=time1[1].split(" ")[3]
  
  
  #===============In ra cac lan login cach day 5 phut==================#
  hien_tai = datetime.datetime.now()
 
  delta_time=hien_tai-datetime.datetime(int(year),int(mon_number),int(day),int(hour)-4,int(minute),int(second),0)
  
  if int(delta_time.total_seconds())    output="New login found "+ str(user_login)
  #================SEND MAIL=====================#
   sendMail(output,"haiedubit@outlook.com")

Tải file script: Tại đây

 

======================================================================

Khi mình đọc lí thuyết xong thì rất nhanh quên. Đó là lý do mình đã xây dựng Platform Lab Mô Phỏng CCNA CCNP trên web độc quyền. Thay vì chỉ đọc, bạn sẽ được tự tay thực hành trên một giao diện trực quan và sinh động, từ đó nhớ lâu; hiểu rõ luồng gói tin. Đây là 1 nền tảng giúp bổ trợ rất mạnh cho các khoá CCNA CCNP truyền thống

Vẫn còn thắc mắc? Đừng ngần ngại, hãy hỏi ngay trong Cộng đồng Network chuyên sâu nhất Việt Nam, nơi luôn có người sẵn sàng giúp đỡ bạn.

Xem thêm các clip mô phỏng mạng vui nhộn hứng thú tại TIKTOK CỦA MÌNH

Bài viết cùng danh mục