سیدحسام الدین حسینی
کارشناس ارشد شبکه

آموزش پیکربندی تجهیزات سیسکو با اسکریپت پایتون

در این دوره آموزشی به کاربردهای زبان پایتون برای مهندسین شبکه می پردازم و اسکریپتهایی را معرفی می کنم که از طریق آنها مهندسین و ادمین های شبکه امکان خودکار سازی فرآیند نگهداشت شبکه را خواهند داشت.در اولین دوره آموزشی پایتون (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)
 میتونید یک فایل متنی شامل IP سوییچ ها (یا روترها) رو بخونید و اسکریپت به تک تک سوییچ ها SSH  زده و دستورات شما را اجرا کرده و در نهایت پیکربندی انجام شده را بر روی همه تجهیزات  Write  و ارتباط SSH  را قطع میکند.توضیح بیشتر اینکه برای اجرای اسکریپت فوق ابتدا باید پایتون 3 را دانلود و نصب کنید و از خط فرمان ، با دستور زیر اسکریپت را اجرا کنید
C:\>python cisco-config.py
در این دوره آموزشی فرض بر این است که شما دوره مقدماتی پایتون رو پشت سر گذاشتید و با مفاهیم و Syntax  زبان پایتون آشنایی دارید ولی باز هم چنانچه در مورد نحوه عملکرد اسکریپت و یا چگونگی اجرای آن ابهامی داشتید من در خدمت هستم.

سیدحسام الدین حسینی
سیدحسام الدین حسینی

کارشناس ارشد شبکه

کارشناس ارشد IT گرایش طراحی شبکه های کامپیوتری هستم. در حال حاضر به عنوان مدرس، طراح، مشاور و مجری امن سازی زیرساخت شبکه با سازمانها و دانشگاهها همکاری دارم.

نظرات