در این دوره آموزشی به کاربردهای زبان پایتون برای مهندسین شبکه می پردازم و اسکریپتهایی را معرفی می کنم که از طریق آنها مهندسین و ادمین های شبکه امکان خودکار سازی فرآیند نگهداشت شبکه را خواهند داشت.در اولین دوره آموزشی پایتون (Python) برای مهندسین شبکه اسکریپت اتصال SSH به تجهیزات سیسکو را براتون معرفی میکنم و اینکه چگونه میتویند یک تجهیزات سیسکو را از طریق پایتون پیکربندی کنید.
حتما تا حالا براتون پیش اومده که بخواین مثلا به تمام سوییچ های شبکه سازمان با SSH وصل بشید و با زدن یک کامند روی همشون یک قابلیت رو روی آنها پیکربندی کنید (مثلا تنظیم SNMP و یا Syslog روی همه سوییچ ها برای ارسال بسته ها به سرور مانیتورینگ) و یا اینکه به دلایل امنیتی بخواین با اجرای یک کامند، یک قابلیت یا سرویس رو روی همشون غیر فعال کنید ( مثلا no cdp run ) اینجور کارهای تکراری و خسته کننده را میتوان از طریق اسکریپت های پایتون انجام داد به عنوان مثال با استفاده از اسکریپت پایتون ضمیمه، در کد زیر :
#----------------------------------------------------
# Cisco Switch/Router Configuration By Python
# By : Hessam Hosseini
# Email : hessam.hosseyni@gmail.com
# Tel : 0912 0612 305
#----------------------------------------------------
#------------------------------------------------- Get User and Password of Switch -----------------------------------
username=input("\n\nUsername: ")
password=getpass(prompt='Password: ')
enable_pass=getpass(prompt='Enable Password: ')
#------------------------------------------------- Read Switch List from file -----------------------------------
with open('Switch_list.txt') as f:
devices_list = f.read().splitlines()
for device in devices_list:
DVIP = device
print (Style.DIM + Fore.WHITE + "\n-------------------------------------------------------")
print (Style.DIM + Fore.WHITE + "\nConnecting to " + DVIP + " ..." + Style.RESET_ALL)
#------------------------------------------------- SSH to Device -----------------------------------
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #IPv4 , TCP Connection
result = sock.connect_ex((DVIP,22))
if result != 0:
print (Style.DIM + Fore.YELLOW + " SSH Port on Switch " + DVIP + " is close." + Style.RESET_ALL)
continue
sock.close()
try:
remote_conn_pre=paramiko.SSHClient()
remote_conn_pre.set_missing_host_key_policy(paramiko.AutoAddPolicy())
remote_conn_pre.connect(DVIP,username=username,password=password,look_for_keys=False,allow_agent=False)
print(Style.DIM + Fore.CYAN + " SSH Connection to %s established." %DVIP + Style.RESET_ALL)
except Exception as e:
print(Style.BRIGHT + Fore.YELLOW + " SSH Connection to %s : Authentication Failed." %DVIP + Style.RESET_ALL)
continue
#------------------------------------------------- Configuration -----------------------------------
remote_conn.send('enable\n')
remote_conn.send(enable_pass+'\n')
remote_conn.send('configure terminal\n')
remote_conn.send('no cdp run\n')
remote_conn.send('logging 192.168.1.100\n')
remote_conn.send('snmp-server host 192.168.1.100\n')
remote_conn.send('exit\n')
remote_conn.send('write\n')
print(Style.DIM + Fore.GREEN + " %s Configuration has been saved." %DVIP + Style.RESET_ALL)
#------------------------------------------------- Close SSH -----------------------------------
remote_conn.close()
print(Style.DIM + Fore.CYAN + " SSH Connection to %s was closed." %DVIP + Style.RESET_ALL)
C:\>python cisco-config.py
کارشناس ارشد شبکه
کارشناس ارشد IT گرایش طراحی شبکه های کامپیوتری هستم. در حال حاضر به عنوان مدرس، طراح، مشاور و مجری امن سازی زیرساخت شبکه با سازمانها و دانشگاهها همکاری دارم.
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود