HaiNguyen-IT SCRIPT PYTHON3 CHO QUẢN TRỊ MẠNG Version Python: Môi trường: Ubuntu 18 Thiết bị mạng demo : Cisco IOS, Juniper vMX Creator: HaiNguyen-IT ĐÂY LÀ BẢN DEMO; THAM KHẢO BẢN FULL : https://www.youtube.com/watch?v=KGjW3s9il54 HaiNguyen-IT Mục lục Phát thiết bị lạ cắm vào mạng access công ty Tự động backup định kỳ cấu hình lưu FTP server Gửi mail báo cáo thay đổi config device Báo cáo network đầu ngày email tự động Tối ưu: Lưu đọc password device từ file riêng Tối ưu: Mã hóa file chứa mật router/switch Tối ưu: Dùng Try Except để script không bị dừng đột ngột Tối ưu: Cấu hình nhiều thiết bị file chứa lệnh riêng Script Netmiko với Juniper Cisco 10 Multivendor với NAPALM 11 Áp dụng Netmiko tự động hóa cho Linux 12 Các hàm xử lý text & gửi mail sử dụng tài liệu 13 Link down khoá học udemy mạng link down full EVE image 14 Download file code tài liệu 15 UPDATE 15/3/2021: bắt gói tin với python EPC 16 UPDATE 16/3/2021: tự động cấu hình tồn mạng HaiNguyen-IT Phát thiết bị lạ cắm vào mạng công ty u cầu: Mạng access cơng ty có switch nối dây máy tính bàn phòng ban Khi người dùng mang laptop Access Point đến cắm vào lỗ mạng gây loop nguy truy cập trái phép vào ổ chung chứa liệu công ty => Ta sử dụng script python để báo cho network admin có người cắm device lạ vào công ty Cách làm: - Tạo file chứa danh sách MAC máy bàn (lấy từ AD show switch yêu cầu người dùng gửi lại cho network admin) - Viết script định kì show mac address –table switch, thấy có MAC mà khơng nằm file bên gửi mail báo cho network admin biết => tùy network admin xử lí tiếp Step1: Tạo file allmac.txt dạng Step2: Viết script check_mac.py #!/usr/bin/env python3 from netmiko import ConnectHandler import smtplib from email.mime.text import MIMEText HaiNguyen-IT from email.mime.multipart import MIMEMultipart #Đọc file allmac sau lưu MAC vào mảng totalmac totalmac=[] f=open('allmac.txt','r') lines=f.readlines() for i in range(0,len(lines)): totalmac+=[lines[i].rstrip()] #khai báo switch công ty sw_user1={ 'device_type': 'cisco_ios', 'ip': '192.168.177.131', 'username': 'admin', 'password': 'cisco', 'secret': 'cisco', 'verbose': False, } sw_user2={ 'device_type': 'cisco_ios', 'ip': '192.168.177.132', 'username': 'admin', 'password': 'cisco', 'secret': 'cisco', 'verbose': False, } # -Viết hàm gửi mail -# def sendMail(output,dstMail): if(output!=''): HaiNguyen-IT msg = MIMEMultipart() msg['From'] = 'myemail@gmail.com' msg['To'] = dstMail msg['Subject'] = "NEW DEVICE JOIN NETWORK" msg.attach(MIMEText(output, 'plain')) text=msg.as_string() server = smtplib.SMTP_SSL('smtp.gmail.com', 465) server.login('myemail@gmail.com', "yourpass") server.sendmail( "myemail@gmail.com", dstMail, text) server.quit() # Login vào switch show mac # output='' all_switches=[sw_user1,sw_user2] for switches in all_switches: net_connect=ConnectHandler(**switches) net_connect.enable() wr=net_connect.send_command_timing("show mac address-table") f=open('mactemp.txt','w') f.write(wr) f=open('mactemp.txt','r') linehai=f.readlines() for i in range(0,len(linehai)): if("Et" in linehai[i]): mac=linehai[i].split(" ")[1].replace(" ","") #=> remove dấu cách HaiNguyen-IT port=linehai[i].split(" ")[3] vlan=linehai[i].split(" ")[0] # So sánh với MAC totalmac ban đầu # # Neu khong co totalmac gửi mail # if (mac not in totalmac): output+="WARNING: New device found: "+mac+" on switch "+switches['ip']+" port "+port+" vlan "+vlan+"\n\n" if(output!=''): sendMail(output,"yourDestMail@gmail.com") Kết chạy chương trình: ta Mac lạ Đặt cronjob 20 phút thực lần: Trên Ubuntu (Các có cronjob cần thêm dịng #!/usr/bin/env python3 script) crontab -e */20 * * * * /usr/bin/env python3 /home/hainm/check_mac.py ... Except để script không bị dừng đột ngột Tối ưu: Cấu hình nhiều thiết bị file chứa lệnh riêng Script Netmiko với Juniper Cisco 10 Multivendor với NAPALM 11 Áp dụng Netmiko tự động hóa cho Linux... => Ta sử dụng script python để báo cho network admin có người cắm device lạ vào công ty Cách làm: - Tạo file chứa danh sách MAC máy bàn (lấy từ AD show switch yêu cầu người dùng gửi lại cho network... phút thực lần: Trên Ubuntu (Các có cronjob cần thêm dòng #!/usr/bin/env python3 script) crontab -e */20 * * * * /usr/bin/env python3 /home/hainm/check_mac.py