Automatizarea retelei cu Python si Netmiko

Python este limbajul de programare al momentului din industria IT, clasandu-se in multe dintre topurile popularitatii limbajelor de programare intre primele trei optiuni ale utilizatorilor. Unul dintre cele mai respectate astfel de topuri este realizat de TIOBE (link aici) si plaseaza Python pe locul trei cu o cota de 11,03%, fiind surclasat doar de venerabilul Java (14,32%) si C (11,23%).

Istoric vorbind, Python a fost dezvoltat la finalul anilor 1980 si s-a dorit a fi un limbaj de programare mai intuitiv si mai usor de citit de catre oameni, mai “human friendly”, decat limbaje precum C++. C++ este un limbaj de programare orientat spre masina, la nivelul la care opereaza procesorul calculatorului, si cu o sintaxa mult mai complicata pentru factorul uman din ecuatia programarii.

Python a devenit un limbaj de programare atat de utilizat si de popular in domeniul IT pentru ca:

este usor de invatat. Pyhton a fost creat pentru a fi elegant si chiar sa imbie utilizatorul sa il foloseasca. Structura sintaxei nu este atat de complicata si chiar ajuta programatorul in procesul de invatare, simplificand si partea de debugging. Parcurgea usoara a codului, folosirea indentarii si a spatiilor, ca si o vasta documentatie si o comunitate foarte unita fac din Python alegerea naturala atat pentru incepatori, cat si pentru programatori cu experienta.

este usor de citit. Pentru un incepator, posibilitatea de a putea urmari usor un program si de a intelege functionalitatea acelui program este acel “make or break” care va determina daca utilizatorul va dori sa continue cu acel limbaj de programare. Python exceleaza la acest capitol, intrucat delimitarea comenzilor in interiorul codului se face cu ajutorul indentarii care “aeriseste” programul. Python foloseste expresii simple, care ofera aceeasi functionalitate ca expresii foarte complicate in alte limbaje, precum C++.

Celebru program Hello World! se poate scrie in C++ ca:

class HelloWorld {

public:

void PrintHelloWorld()

{

std::cout << “Hello World!\n”;

}

};

 

Acelasi program se poate scrie in Python ca:

print(“Hello World!”)

Pentru cineva care de-abia ia contact cu lumea programarii, codul din C++ poate fi echivalat cu o scena din filmele lui Alfred Hitchcock 😊 Usurinta cu care se citeste un program in Python este unul dintre marele sale atuuri pentru inginerii noi in domeniu si unul dintre principalele motive pentru adoptia masiva a acestui limbaj.

este prima optiunea a programatorilor din multe domenii. Multitudinea de aplicatii in care se poate folosi demonstreaza de ce Python este la moda si reprezinta adeasea prima optiune a dezvoltatorilor software. Principalele domenii care folosesc astazi Python sunt:

– web development – framework-uri ca Django si Flask fac posibila dezvoltarea rapida a aplicatiilor web, Python fiind limbajul de “go to” pentru programatori

– data science – Python este folosit pentru a extrage informatii si pentru a procesa rapid date prin librarii ca Pandas, NumPy si SciPy; grafice utile pot fi randate cu Matplotlib sau Seaborn

– AI/ML – Python este un limbaj de programare sigur si stabil in care sa se dezvolte modele computationale pentru algoritimii de ML utilizati de AI

– IoT – Python este folosit adeseori pentru a crea aplicatiile care ruleaza pe sisteme de tip embedded. O buna parte din dezvoltare se poate face pe placate de Raspberry Pi care poate transforma orice obiect intr-un dispozitiv electronic smart.

              – automatizarea retelelor – Python poate fi folosit pentru a reduce timpul necesar departamentului IT de a realiza configuratii repetitive pe echipamentele de retea. Prin librarii ca Paramiko si Netmiko task-urile de zi cu zi pot fi transformate in fisiere script si executate printr-o singura comanda.

este lightweight si simplu de portat intre sisteme diferite. Astazi rulam cod pe tablete si smartphone-uri, pe device-uri Chromebook, pe masini, frigidere sau chiar becuri de iluminat. Aceste dispozitive nu au capacitatea de stocare sau cantitatea de memorie RAM de care dispun calculatoarele noastre. Librariile Python sunt mici si concise, in timp ce ofera suficient de multa versatilitate, caracteristica asteptata de la un limbaj modern de programare. Java sau C# vin insotite de librarii, functii si alte aditii care reprezinta un volum mare de informatii complexe. Aceste elemente ofera o putere imensa programatorului, dar au dezavantajul cantitatilor de resurse hardware necesare rularii codului. In comparatie, codul scris in Python este foarte lightweight, ideal pentru sistemele embedded care se cer acum a fi programate. Codul necesar pentru a rula functii de control pe un bec este mult mai fezabil si eficient din punct de vedere cost fata de efortul necesar executarii unui cod similar in C# folosind aceleasi resurse limitate.

Mai jos este un exemplu simplu de program in Python care poate fi folosit pentru a configura o noua interfata de loopback pe un router Cisco. Programul poate fi adaptat pentru a transmite orice comanada, sau orice secventa de comenzi necesare pentru a indeplini un anumit task. Datele de input necesare executarii codului se preiau de la tastatura, dar codul poate fi modificat pentru a citi aceste date dintr-un fisier csv. De asemenea, configuratia se poate extinde de la un echipament de retea pana la un numar oricat de mare.

Pentru conectarea la echipamentul de retea si pentru a transmite comenzi catre acesta se foloseste libraria Netmiko. Daca aceasta lipseste se poate instala prin comanda:

pip install netmiko

Netmiko este o librarie Python disponibila pe multiple platforme software (Windows, Linux, etc) creata cu scopul de a simplifica managementul echipamentelor de retea prin SSH. Netmiko suporta o varietate de echipamente de la vendori precum Cisco, Arista si Juniper. Netmiko este derivata din libraria Paramiko, o interfata Python nativa pentru conceptele de SSH din networking.

#Cod sursa – adaugare interfata de loopback

Mihai Dumitrascu, Sr Systems Engineer