EN
۱
  • خانه
  • وبلاگ
  • درباره ما
    • تیم ما
    • درباره ما
    • تماس با ما
  • جعبه ابزار

اسکریپت CRC Check تجهیزات سیسکو

9 دسامبر 2020سید حمید رضا حسینیR&S, ِDevnet

در ادامه‌ی پست‌های ورود به دنیای برنامه نویسی شبکه، در این پست و پست‌های آتی به ایجاد و توضیح اسکریپت‌های کاربردی پایتون در حوزه‌ی نتورک می‌پردازیم. این اسکریپت‌ها عموما طی پروژه و بر اساس نیاز واقعی نوشته شده‌اند و انتشار آن می‌تواند برای سایرین نیز مفید باشد. سعی داریم با توضیح کامل کتابخانه‌های استفاده شده و کد ایجاد شده در هر اسکریپت درک کاملی از فرآیند طی شده ایجاد کنیم و امیدواریم این روش بتواند به مرور توانایی ایجاد اسکریپت‌های مشابه را برای افرادی که آشنایی کمتری با این زبان دارند فراهم کند.

به عنوان اولین قدم ، در این پست به کمک یک اسکریپت وضعیت CRC  روتر و سویچ ها را چک می‌کنیم و در صورت وجود CRC، مدیر سیستم را از طریق ایمیل با خبر می‌کنیم.
ابتدا برای راحت تر و بهینه شدن نحوه اتصال به روترها و سویچ ها یک فایل با فرمت YAML درست می‌کنیم که در آن اطلاعات تجهیزات، IP،نام کاربری و گذرواژه و IOS موجود است.

Testbed:
 name: alwaysonsbxs
                           
  credentials:
    default:
        username: "admin"
        password: "ipcafe"
        enable: "ipcafe"
                       
 devices:
      csr1000v-1:
          type: router
          os: iosxe
          connections:
              ssh:
                  protocol: ssh 
                  ip: 192.168.1.200
                                  
      csr1000v-2:
          type: router
          os: iosxe
          connections:
              ssh:
                  protocol: ssh 
                  ip: 192.168.1.201 

 

 

در ادامه با استفاده از کتابخانه Genie دستور CLI را به روترها ارسال می‌کنیم و نتیجه را در قالب فرمت JSON دریافت می‌کنیم. همچنین از کتابخانه های smtplib , email.mime.multipart و email.mme.text جهت ارسال ایمیل استفاده می‌کنیم.

from genie.conf import Genie
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

در بخش اصلی اسکریپت به کمک حلقه for به تجهیزاتی که مشخصات آن‌ها را در فایل testbed  مشخص کردیم متصل می‌شویم و دستور show interfaces را ارسال می‌کنیم.
برای اطلاعات بیشتر در مورد کتابخانه genie  و مواردی که پشتیبانی می‌کند به این لینک مراجعه کنید: https://pubhub.devnetcloud.com/media/genie-feature-browser/docs/#/

for device in testbed.devices:
    testbed.devices[device].connect()
    interface_details=testbed.devices[device].parse("show interfaces")
    device_verstions[device]=verstion
    device_interface_details[device]=interface_details 

نتیجه دریافت شده را به کمک ۲ حلقه for  به فرمت مطلوب خود تبدیل می‌کنیم و شرطی جهت بررسی CRC  اینترفیس های می‌نویسیم و نتیجه را به تابع sendmail  ارسال می‌کنیم.

for device,interfaces in device_interface_details.items():
    for interface, details in interfaces.items():
        if details["counters"]["in_crc_errors"]==0:
            continue
        else:
            sendmail(crc= details["counters"]["in_crc_errors"],interface=interface,device=device)  

 

عمل ارسال ایمیل را به صورت یک function در نظر گرفتیم که بتوانیم چندین بار از این function استفاده کنیم:

def sendmail(crc,interface,device):
  from_addr='ipcafe@gmail.com'
  to_addr='info@ipcafe.net'
  msg=MIMEMultipart()
  msg['From']=from_addr
  msg['To']=",".join(to_addr)
  msg['Subject']=f'{device}--Interface CRC Error'
  body=f"device: {device} on{interface} have {crc} CRC Error"
  msg.attach(MIMEText(body,'plain'))
  smtp_server=smtplib.SMTP('smtp.gmail.com',587)
  smtp_server.starttls()
  smtp_server.login(''ipcafe@gmail.com”,”password”)
  text=msg.as_string()
  smtp_server.sendmail(from_addr,to_addr,text)
  smtp_server.quit()   

  • نکته: اگر از gmail برای ارسال ایمیل در برنامه استفاده می‌کنید باید ابتدا به account gmail‌ای که فرستنده ایمیل در برنامه است لاگین کنید، سپس وارد این url شوید و گزینه اجازه به برنامه‌های با امنیت کمتر را روشن کنید.
  • به کمک cron job می‌توانید زمانبندی دلخواه را برای اجرای این برنامه انتخاب کنید.

دانلود کد برنامه و فایل testbed :دانلود 
گذرواژه:ipcafe.net

برچسب ها: devnet, Genie, python
سید حمید رضا حسینی
سید حمید رضا حسینی با دو سال سابقه حرفه ای در حوزه های R&S and VOIP شبکه به عنوان یک متخصص در این زمینه ها شناخته می شود. تخصصی که حاصل تجارب عیب یابی و راه اندازی های متعدد در پروژه های مختلف می باشد.روحیه کار تیمی و یادگیری سریع مطالب به صورت خودآموز (self-study) از ویژگی های شخصیتی اوست.

دیدگاهتان را بنویسید لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

کانال تلگرام آی پی کافه

نوشته‌های تازه

  • آشنایی با Multicast
  • Automatic Turn off Debugger
  • Python script to create jabber phones
  • CRC Error check Script
  • اسکریپت CRC Check تجهیزات سیسکو

دسته‌ها

  • Collaboration
  • Datacenter
  • Devnet-English
  • Public
  • R&S
  • Security
  • Storage
  • جعبه ابزار
  • دسته‌بندی نشده
  • ِDevnet
[carousel-horizontal-posts-content-slider]
صفحه نخستدرباره مـــاارتباط با ماوبلاگ
تمامی حقوق برای کافه آی پی محفوظ می باشد © 1399