Tải bản đầy đủ (.pdf) (6 trang)

Script python áp dụng cho quản trị mạng (tiếng việt)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (842.59 KB, 6 trang )

HaiNguyen-IT

SCRIPT PYTHON3 CHO QUẢN TRỊ MẠNG
Version Python: 3
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 :

/>

HaiNguyen-IT
Mục lục
1. Phát hiện thiết bị lạ cắm vào mạng access của công ty
2. Tự động backup định kỳ cấu hình và lưu trên FTP server
3. Gửi mail báo cáo thay đổi config của device
4. Báo cáo network đầu ngày bằng email tự động
5. Tối ưu: Lưu và đọc password của device từ file riêng
6. Tối ưu: Mã hóa file chứa mật khẩu router/switch
7. Tối ưu: Dùng Try Except để script khơng bị dừng đột ngột.
8. Tối ưu: Cấu hình nhiều thiết bị bằng file chứa lệnh riêng
9. Script Netmiko với Juniper và 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 trong tài liệu này
13. Link down các khoá học udemy về mạng và link down full EVE image
14. Download các file code trong tài liệu
15. UPDATE 15/3/2021: bắt gói tin với python và EPC
16. UPDATE 16/3/2021: tự động cấu hình tồn mạng



HaiNguyen-IT
1. Phát hiện thiết bị lạ cắm vào mạng công ty
u cầu: Mạng access của cơng ty có các switch nối dây ra các máy tính bàn tại các phịng ban. Khi
người dùng mang laptop hoặc Access Point đến cắm vào các lỗ mạng có thể gây loop hoặc nguy cơ truy
cập trái phép vào các ổ chung chứa dữ liệu của công ty. => Ta sử dụng script python để báo cho network
admin khi có người cắm device lạ vào công ty.

Cách làm:
- Tạo 1 file chứa danh sách các MAC của các máy bàn (lấy từ AD hoặc show trên switch hoặc yêu cầu
người dùng gửi lại cho network admin)
- Viết script định kì show mac address –table trên switch, nếu thấy có MAC mà khơng nằm trong file bên
trên thì 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 như dưới

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 các 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 các 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'] = ''
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('', "yourpass")
server.sendmail(
"",
dstMail,
text)
server.quit()

#------------------------Login vào switch và 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 các MAC trong totalmac ban đầu--------------------------------#
#----------Neu khong co trong totalmac thì 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,"")
Kết quả khi chạy chương trình: ta được Mac lạ như dưới

Đặt cronjob 20 phút thực hiện 1 lần: Trên Ubuntu (Các bài có cronjob cần thêm dịng
#!/usr/bin/env python3 ở trên cùng của script)
crontab -e
*/20 * * * * /usr/bin/env python3 /home/hainm/check_mac.py



×