Enable Network

Cisco Ağlarında Otomasyon: Python, Netmiko ve NAPALM ile Network Automation

  • 23 Ekim 2026
  • Cisco
Cisco Ağlarında Otomasyon: Python, Netmiko ve NAPALM ile Network Automation

Geleneksel ağ yönetiminde switch ve router gibi cihazlara tek tek SSH ile bağlanarak konfigürasyon yapmak oldukça zaman alıcı ve hata yapmaya açık bir süreçtir. Özellikle yüzlerce hatta binlerce cihazdan oluşan kurumsal ağlarda manuel yönetim hem operasyonel maliyetleri artırır hem de yönetilebilirliği zorlaştırır.
Bu noktada Network Automation kavramı devreye girer. Ağ otomasyonu sayesinde ağ cihazları programatik olarak yönetilebilir, konfigürasyonlar merkezi olarak uygulanabilir ve operasyonel süreçler büyük ölçüde hızlandırılabilir.
Python programlama dili, güçlü kütüphaneleri sayesinde ağ otomasyonunda en yaygın kullanılan araçlardan biridir. Özellikle Netmiko ve NAPALM kütüphaneleri Cisco cihazları ile otomasyon sağlamak için oldukça popülerdir.
Bu makalede aşağıdaki konular detaylı şekilde ele alınacaktır:

  • Network Automation kavramı
  • Python ile ağ otomasyonu
  • Netmiko kullanımı
  • NAPALM kullanımı
  • Cisco cihazlarda otomatik konfigürasyon
  • Otomasyon mimarisi
  • Gerçek kullanım senaryoları

Network Automation Nedir?

Network Automation, ağ cihazlarının yönetiminin manuel işlemler yerine yazılım araçları ile otomatik hale getirilmesidir.

Bu yaklaşım sayesinde:

  • İnsan hatası azalır
  • Konfigürasyonlar standart hale gelir
  • Ağ yönetimi hızlanır
  • Büyük ölçekli ağlar kolay yönetilir

Python ile Network Automation

Python ağ otomasyonu için en popüler dildir çünkü:

  • öğrenmesi kolaydır
  • güçlü kütüphanelere sahiptir
  • geniş bir topluluğu vardır

Network Automation için en çok kullanılan Python kütüphaneleri:

Kütüphane

Temel Amaç (Ne Yapar?)

Öne Çıkan Özelliği

Netmiko

SSH üzerinden cihaz yönetimi

Çok fazla cihaz desteği (Multi-vendor) ve kolay CLI komut gönderimi.

NAPALM

Çoklu vendor otomasyonu

Farklı marka cihazlardan (Cisco, Juniper, Arista) aynı komutla veri çekme (Getters).

Paramiko

Düşük seviye SSH bağlantısı

Netmiko'nun temelidir; SSHv2 protokolü üzerinde tam kontrol sağlar.

Nornir

Otomasyon Framework

Python ile yazılmış, hızlı, envanter yönetimi olan ve paralel işlem yapabilen framework.

PyATS

Test Otomasyonu

Cisco tarafından geliştirilen, ağın durumunu doğrulamak ve test etmek için kullanılan devasa kütüphane.

Scapy

Paket Analizi

Ağ paketlerini oluşturma, yakalama ve manipüle etme (Low-level packet manipulation).

Ansible

Konfigürasyon Yönetimi

(Python tabanlı) Agentless, YAML dosyaları ile deklaratif konfigürasyon sağlar.

Netmiko Nedir?
Netmiko, Python tabanlı bir SSH otomasyon kütüphanesidir. Cisco, Juniper, Arista gibi birçok vendor cihazı destekler.
Netmiko sayesinde:

  • SSH bağlantısı kurabilir
  • komut çalıştırabilir
  • konfigürasyon gönderebilir
  • çıktı alabiliriz

Netmiko; farklı üreticilere ait cihazlarla kurulacak SSH oturumlarını, prompt geçişlerini ve veri akışını otomatik olarak yöneterek bağlantı karmaşıklığını ortadan kaldırır. Ancak yapılandırma aşamasında, cihazın kendi işletim sistemine (IOS, Junos vb.) özgü komut diziminin (syntax) kullanıcı tarafından tanımlanması gerekir.

Netmiko Kurulumu
Kuruluma geçmeden önce Windows ya da linux Python kurulu olması gerekmektedir. Windows için Anaconda yazılımı doğrudan indirip kurabilir veya Python for Windows olarak indirip kurabilirsiniz. 

Kütüphane Kurulumları : 
pip install netmiko

Netmiko ile Cisco Switch'e Bağlanma

from netmiko import ConnectHandler

device = {
"device_type": "cisco_ios",
"host": "192.168.1.10",
"username": "admin",
"password": "Cisco123"
}

connection = ConnectHandler(**device)

output = connection.send_command("show ip interface brief")

print(output)

Script çalıştırıldığında Python otomatik olarak switch'e bağlanır ve komutu çalıştırır.

Birden Fazla Switch Yönetimi
Gerçek ağlarda genellikle birden fazla cihaz bulunur.
Python listesi kullanarak birden fazla cihaz yönetilebilir:

from netmiko import ConnectHandler

devices = [
    {"device_type":"cisco_ios","host":"192.168.1.10","username":"admin","password":"Cisco123"},
    {"device_type":"cisco_ios","host":"192.168.1.11","username":"admin","password":"Cisco123"},
    {"device_type":"cisco_ios","host":"192.168.1.12","username":"admin","password":"Cisco123"}
]

for device in devices:
    connection = ConnectHandler(**device)
    output = connection.send_command("show version")
    print(output)

Bu script aynı anda birden fazla switch'ten bilgi alabilir.

Otomatik VLAN Oluşturma
Python ile birden fazla switch'te VLAN oluşturulabilir:

from netmiko import ConnectHandler

# Cihaz listesi (Gerçek senaryoda bu bir Excel veya TXT dosyasından okunur)
switches = [
    {'device_type': 'cisco_ios', 'ip': '10.50.1.1', 'username': 'admin', 'password': 'şifre'},
    {'device_type': 'cisco_ios', 'ip': '10.50.1.2', 'username': 'admin', 'password': 'şifre'},
]

vlan_commands = [
    'vlan 100',
    'name MISAFIR_AGI',
    'state active'
]

for device in switches:
    print(f"Connecting to {device['ip']}...")
    try:
        net_connect = ConnectHandler(**device)
        output = net_connect.send_config_set(vlan_commands)
        print(f"Success on {device['ip']}:\n{output}")
        net_connect.save_config() # write memory yaparak ayarları kaydeder.
        net_connect.disconnect()
    except Exception as e:
        print(f"Error on {device['ip']}: {e}")

NAPALM Nedir?

NAPALM (Network Automation and Programmability Abstraction Layer with Multivendor support), çoklu vendor desteği sağlayan bir network automation kütüphanesidir.
NAPALM sayesinde:

  • Cisco
  • Juniper
  • Arista
  • NX-OS

gibi farklı cihazlar tek bir API ile yönetilebilir.


NAPALM Kurulumu


pip install napalm

Cisco driver kurulumu:
pip install napalm-ios

NAPALM ile Switch Bilgisi Alma
from napalm import get_network_driver

driver = get_network_driver("ios")

device = driver("192.168.1.10","admin","Cisco123")

device.open()

facts = device.get_facts()

print(facts)

device.close()

Çıktı:
hostname
model
serial number
uptime
os version
NAPALM ile Konfigürasyon Yönetimi
NAPALM konfigürasyonları candidate configuration yöntemi ile yönetir.
Örnek:
device.load_merge_candidate(config="vlan 100")

device.commit_config()

Bu yöntem sayesinde:

  • konfigürasyon doğrulanır
  • hatalı config uygulanmaz
  • rollback yapılabilir

Gerçek Hayat Senaryosu


Bir network mühendisi 200 switch'e aynı VLAN'ı eklemek istiyor.
Manuel yöntem:
200 cihaz
200 SSH
200 config

Otomasyon yöntemi:
1 Python script
200 cihaz
10 saniye

Network Automation Avantajları


Network automation kullanmanın birçok avantajı vardır

Avantaj

Açıklama

Operasyonel Etki

Hız

Konfigürasyonlar ve güncellemeler tüm cihazlara saniyeler içinde uygulanır.

Manuel işlem sürelerini %90'a varan oranda azaltır.

Standartlaştırma

Tüm ağ cihazları önceden belirlenmiş şablonlara göre aynı konfigürasyonu alır.

Ağda "konfigürasyon kirliliği" (config drift) oluşmasını engeller.

Hata Azaltma

Tekrarlayan görevlerde yorgunluk veya dikkatsizlik kaynaklı insan hatası minimize edilir.

Yanlış komut yazımı nedeniyle oluşan kesinti riskini (downtime) düşürür.

Ölçeklenebilirlik

10 cihazı yönetmekle 1000 cihazı yönetmek arasında efor farkı kalmaz.

Büyük ve karmaşık ağların yönetimini sürdürülebilir kılar.

Görünürlük

Cihaz durumları ve loglar otomatik olarak toplanıp raporlanabilir.

Envanter takibi ve sorun giderme süreçlerini hızlandırır.

 

Python tabanlı otomasyon araçları, modern ağ yönetiminin vazgeçilmez bir parçası haline gelmiştir. Netmiko ve NAPALM gibi kütüphaneler sayesinde ağ cihazlarının yönetimi kolaylaşmakta, konfigürasyon süreçleri hızlanmakta ve operasyonel hatalar önemli ölçüde azaltılmaktadır.
Network automation teknolojileri, özellikle büyük ölçekli kurumsal ağlarda verimliliği artıran ve yönetim süreçlerini modernleştiren önemli bir yaklaşım olarak öne çıkmaktadır.

"Check-and-Confirm" Mantığı
Otomasyonun en büyük riski yanlış komutu tüm ağa basmaktır. Profesyonel bir script'te her zaman şu adımlar olmalı:

  1. Connectivity Check: Ping atarak cihazın ayakta olduğunu doğrula.
  2. Pre-Check: Komutu göndermeden önce mevcut durumu kontrol et.
  3. Execution: Komutu gönder.
  4. Post-Check: Değişikliğin uygulandığını teyit et.


Örnek Bir Scprit : Kullanıcı oluşturcak , vlan ekleyip kontrol edip save yapıp çıkacak. 
from netmiko import ConnectHandler
from napalm import get_network_driver

# cihaz bilgileri
device = {
    "device_type": "cisco_ios",
    "host": "192.168.1.10",
    "username": "admin",
    "password": "Cisco123",
}

print("SSH ile switch'e bağlanılıyor...")

connection = ConnectHandler(**device)

# gönderilecek konfigürasyon
config_commands = [

    "username enable_akedemi privilege 15 secret Enable2026!",

    "vlan 10",
    "name SERVER",

    "vlan 20",
    "name OGRENCI"
]

print("Konfigürasyon uygulanıyor...")

output = connection.send_config_set(config_commands)

print(output)

print("Konfigürasyon kaydediliyor...")

connection.save_config()

connection.disconnect()

print("Netmiko işlemleri tamamlandı")

# -----------------------------------
# NAPALM doğrulama kısmı
# -----------------------------------

print("\nNAPALM ile doğrulama başlıyor...")

driver = get_network_driver("ios")

napalm_device = driver(
    hostname="192.168.1.10",
    username="admin",
    password="Cisco123"
)

napalm_device.open()

# VLAN kontrolü
vlans = napalm_device.get_vlans()

print("\nVLAN kontrolü:")

for vlan_id in ['10','20']:
    if vlan_id in vlans:
        print(f"VLAN {vlan_id} bulundu → {vlans[vlan_id]['name']}")
    else:
        print(f"VLAN {vlan_id} bulunamadı")

# running config kontrolü
running = napalm_device.get_config()['running']

print("\nKullanıcı kontrolü:")

if "enable_akedemi" in running:
    print("enable_akedemi kullanıcısı oluşturuldu")

napalm_device.close()

print("\nAutomation başarıyla tamamlandı.")

Benzer Blog Yazıları

  • 1 Ekim 2026

Cisco switchlerinizi güncel tutmak, sadece yeni özellikler kazanmak değil, aynı zamanda güvenlik açıklarını kapatmak için de hayati önem taşır. Bu rehberde, dosyaları switch'e aktarmanın en popüler iki yolunu inceleyeceğiz.

Devamını Oku
  • 23 Ekim 2026

Geleneksel ağ yönetiminde switch ve router gibi cihazlara tek tek SSH ile bağlanarak konfigürasyon yapmak oldukça zaman alıcı ve hata yapmaya açık bir süreçtir. Geleneksel metotları bir kenara bırakın, kod yazan ağ mühendisi (NetDevOps) olmanın kapılarını aralayın! Detaylı kod örnekleri ve senaryolar rehberimizde.

Devamını Oku
  • 12 Ekim 2026

Ağ Yönetiminde Tek Şifre, Tam Denetim: Active Directory Entegreli TACACS+!
Şirket ağınızdaki onlarca switch ve router için ayrı ayrı kullanıcı açmaktan yoruldunuz mu? Peki, kimin hangi komutu yazdığını saniye saniye izleyebiliyor musunuz? 🕵️‍♂️
Enable Akademi'de çıtayı yükseltiyoruz! Bu hafta, ağ güvenliğinin "Altın Standartı" olan TACACS+ sistemini, kurumunuzun kalbi olan Active Directory ile nasıl konuşturacağınızı tüm detaylarıyla anlattık.

 

Devamını Oku