Script Monitor Spanning-Tree và bảng ARP
Hỗ trợ monitor lỗi Layer2 Spanning tree và alarm arp flooding
1. Để lưu log thay đổi root của spanning tree trên switch:
conf t
spanning-tree logging
Khi có thay đổi root spanning tree sẽ có log ghi lại, gõ “show logging” để xem
2. Dùng script để check định kỳ
=====CHECK SPANNING TREE THAY ĐỔI========
- show spanning-tree root khi mạng bình thường lưu vào 1 file làm chuẩn
- định kỳ , ví dụ 1 phút 1 lần login vào switch và show spanning-tree root, lưu vào file
- Nếu thấy root-bridge mác có thay đổi so với file chuẩn ban đầu thì mail báo
=====CHECK arp table nếu tăng đột ngột thì mail=====
Script :
#########SCRIPT CẢNH BÁO KHI SPANNING TREE BỊ THAY ĐỔI ROOT#########
#####CẢNH BÁO KHI BẢNG ARP TĂNG CAO ĐỘT BIẾN#########
from netmiko import ConnectHandler
import re
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
################SCRIPT MONITOR XEM CÓ SWITCH NÀO LẠ CẮM VÀO VÀ CHIẾM ROOT KHÔNG##################
#####################THỰC HIỆN TRÊN CORE SWITCH CISCO ############################
###############TRƯỚC KHI THỰC HIỆN CẦN show spanning-tree root và lưu vào file vlan_root_standard.txt ĐỂ SO SÁNH#######
core_sw1={
'device_type': 'cisco_ios',
'ip': '192.168.177.131',
'username': 'admin',
'password': 'cisco',
'secret': 'cisco',
'verbose': False,
}
#===============Login vào switch rồi show spanning-tree root ở thời điểm check
#và lưu vào file temp-vlan.txt==============#
net_connect=ConnectHandler(**core_sw1)
net_connect.enable()
get_root_stp = net_connect.send_command_timing("show spanning-tree root")
f=open('temp-vlan.txt','w')
f.write(get_root_stp)
f.close()
#================Đọc file chuẩn ban đầu====================#
f=open('vlan_root_standard.txt','r')
lines=f.readlines()
for line in lines:
vlan = re.findall(r'VLAN\w*',line)[0].replace(' ','')
mac_root = re.findall(r'\w{4}\.\w{4}\.\w{4}',line)[0].replace(' ','')
#================Mở file vừa show ở thời điểm check Rồi so sánh với file chuẩn====================#
f1=open('temp-vlan.txt','r')
templines=f1.readlines()
for templine in templines:
vlan_temp = re.findall(r'VLAN\w*',templine)[0]
if vlan_temp==vlan:
mac_root_temp = re.findall(r'\w{4}\.\w{4}\.\w{4}',templine)[0].replace(' ','')
if mac_root_temp!=mac_root:
print("Root of VLAN "+str(vlan)+" is changed from "+mac_root+" \nto "+mac_root_temp )
###thực hiện hàm gửi mail outlook báo như thủ tục ở dưới####
https://hainguyenit.edubit.vn/blog/gui-mail-outlook-bang-python-script
#================check arp====================#
mac_arp_current = net_connect.send_command_timing("show ip arp | inc Total number")
normal_arp=20 ##giả sử bình thường bảng arp chỉ có khoảng 20 MAC
if so_luong_mac_arp >= normal_arp*1.5:
print ("Warning: arp increase on core switch "+ str(mac_arp_current))
###thực hiện hàm gửi mail báo như thủ tục ở dưới####
https://hainguyenit.edubit.vn/blog/gui-mail-outlook-bang-python-script
Bài viết cùng danh mục
Danh mục bài viết
- Juniper
- Tài Nguyên LAB
- Wireshark
- FeedBack
- Multicast lab
- Security Infa
- Checkpoint
- Lab OSPF
- Router Logging
- LAB CCNA CCNP CÓ GIẢI
- DMVPN
- Mikrotik
- MPLS
- PFSENSE
- DUMP CCNA
- Điều khoản
- F5 LTM
- MONITOR NETWORK
- TOOL HỌC CCNA
- TƯ VẤN KHÓA HỌC
- PYTHON SCRIPT HỮU ÍCH
- IPv6
- Quality of Service
- QoS
- VXLAN
- SDWAN
- ISE
- Fortigate
- BGP
- MINH HỌA KHÁI NIỆM TRONG CCNA
- Bài tập CCNA CCNP (support Học viên)
- Phỏng vấn IT chứng khoán
- Layer2 CCNA
- Bài tập thiết kế mạng CCNA
- Linux
- EEM SCRIPT
- ASA LAB
- DHCP
- NEXUS
- Giao thức IS IS
- ANSIBLE
- PALO ALTO
- ARUBA SWITCH
- CÂU HỎI TỪ ĐỀ THI THẬT