piton

Paramiko ve Netmiko arasındaki fark nedir?

Paramiko ve Netmiko arasındaki fark nedir?

Ağ oluşturma söz konusu olduğunda, çok çeşitli bakış açıları vardır ve gerçek dünyadaki tüm cihazlarla nasıl etkileşime geçileceği konusunda uzman olunamaz. Ancak, tüm ağ aygıtları, yönetildiğinde otomatikleştirilebilen benzer işlevleri paylaşır.

Diğer derslerimde belirtildiği gibi, programcılar tembeldir ve her zaman verimliliği artırmaya çalışırlar - bu nedenle en az işi yaparlar 🙂 - ve ağla ilgili sorunları otomatikleştirmeye gelince, çoğu zaman çoğu zaman şansa atlar.

Bugünün hızlı kılavuzunda, iki popüler Python kitaplığı kullanarak SSH'yi otomatikleştirmeyi size tanıtacağım: paramiko ve netmiko. SSH'yi otomatikleştirmek ve ağ cihazlarıyla etkileşim kurmak için iki kitaplığı kullanarak basit python betikleri oluşturacağız.

Bu yaklaşımı seçtim çünkü öncelikle Paramiko ve Netmiko arasındaki farklara odaklanan bir rehber çok kısa olurdu - basit bir tablo yeterli olurdu - ve somut olmaması. Bu yaklaşımı benimseyerek, onlarla daha iyi deneyler yapabilecek ve hangisinin neyi, nasıl yaptığını görebileceksiniz.

Başlayalım:

Paramiko nedir?

Resmi web sitesi Paramiko'yu şu şekilde tanımlıyor:

“Paramiko bir Python'dur (2.7, 3.4+) hem istemci hem de sunucu işlevselliği sağlayan SSHv2 protokolünün uygulanması.”

umarım açık olmuştur. Temel olarak, demek Paramiko, SSH ile etkileşim için bir python kütüphanesidir.

Şimdi:

Bir sunucuya giriş yapmak istediğimizde, terminal-cmd, xterm, MobaXterm veya sadece Gnome Terminal-login'e gittiğimizi ve ardından komutları çalıştırdığımızı biliyoruz.

Paramiko'nun bu konuda nasıl yardımcı olabileceğini görelim.

Paramiko Nasıl Kurulur

Paramiko'yu kullanmak için kurmamız gerekiyor. Makinenizde Python - tercihen python 2 - kurulu olmalıdır. Pip kullanarak Paramiko'yu kurmak için aşağıdaki komutu girin.

sudo pip Paramiko'yu kurun
Python -m pip yükleme paramiko

Kaynaktan derleme yapmak istiyorsanız, sağlanan kaynağı kullanarak resmi Paramiko GitHub deposuna bakın:

https://github.com/paramiko/paramiko

Paramiko kullanarak SSH'ye bağlanma

Paramiko kullanarak SSH'ye bağlanmak için, hostname parametresini gerektiren connect() yöntemini kullanırız - diğer parametreleri de destekler, ancak bunlara ihtiyacımız olmadığı için şimdilik onları görmezden gelebiliriz.

connect(hostname, port=22, kullanıcı adı=Yok, şifre=Yok, pkey=Yok, key_filename=Yok, zaman aşımı=Yok, allow_agent=Doğru, look_for_keys=Doğru, sıkıştırma=Yanlış, çorap=Yok, gss_auth=Yanlış, gss_kex= False, gss_deleg_creds=Doğru, gss_host=Yok, banner_timeout=Yok, auth_timeout=Yok, gss_trust_dns=Doğru, passphrase=Yok, disable_algorithms=Yok)

Paramiko'da bulunan bu işlevi kullanma. müşteri.SSHC istemcisi.connect(), belirtilen ana bilgisayar adına bağlanır ve kimliğini doğrular. Hedef sistem, mevcut yerel sistem anahtarlarına karşı kontrol edilir (güvenilir).

Belirli bir ana bilgisayar dosyanız varsa, load_host_keys() yöntemini kullanabilir ve Paramiko SSH istemcisini bilinmeyen herhangi bir ana bilgisayarı paramiko'ya ekleyecek şekilde ayarlayabilirsiniz.Otomatik Ekleme Politikası(). İstemciyi güvenilmeyen sistemlerde kullanıyorsanız paramiko kullanmaktan kaçının.Otomatik Ekleme Politikası.

SSH'yi Parolayla Bağlama

Connect yönteminden, sisteme bağlanmak için kullanabileceğimiz kullanıcı adı ve şifre parametrelerine sahip olduğumuzu görebiliriz. Kullanıcı adı ve şifre ile SSH'ye bağlanmak için aşağıdaki kodu göz önünde bulundurun.

paramiko'dan import util, SSHClient, AutoAddPolicy
istemci = SSHClient()
müşteri.load_system_host_keys()
müşteri.load_host_keys("/home/linuxhint/.ssh/bilinen_hostlar")
müşteri.set_missing_host_key_policy(AutoAddPolicy())
müşteri.connect(hostname="linuxhint.com", kullanıcı adı="admin", password="AdminPassword")
müşteri.kapat()

Paramiko SSHClient sınıfını içe aktarırken sorunlarla karşılaşırsanız, aşağıdaki yığın akışı sorusuna bakın:

https://yığın akışı.com/questions/29378234/python-import-paramiko-error-cannot-import-name-util

SSH'yi Anahtar Üzerinden Bağlama

Hepimizin bildiği gibi, SSH'yi anahtarla bağlamak, ham parola kullanmaktan daha güvenlidir. Paramiko bunu biliyor ve anahtar dosyasını geçirmenize ve hedef sisteme bağlanmanıza izin veriyor.

Aşağıdaki kodu göz önünde bulundurun.

paramiko'dan ithalat SSHClient
paramiko AutoAddPolicy'den
istemci = SSHClient()
müşteri.load_system_host_keys()
müşteri.load_host_keys('/home/linuxhint/.ssh/bilinen_host'lar')
müşteri.set_missing_host_key_policy(AutoAddPolicy())
müşteri.connect('linuxhint.com',username='admin',key_filename='ssh_key.pem', passphrase='AdminPassphrase')
müşteri.kapat()

SSH Üzerinden Komutları Çalıştırma

SSH kullanarak (Paramiko üzerinden) sisteme eriştiğinizde, bir dizi komut çalıştırabilirsiniz. Aşağıdaki kod parçacığını göz önünde bulundurun:

istemci = SSHClient()
müşteri.load_system_host_keys()
müşteri.connect('linuxhint.com')
stdin, stdout, stderr = istemci.exec_command('bash”)
standart.kapat()
standart.kapat()
standart.kapat()
müşteri.kapat()

Bu noktada, SSH'yi otomatikleştirmek için Paramiko kitaplığını nasıl kullanacağınızı biliyorsunuz. Tahmin edebileceğiniz gibi, bu kapsamlı bir Paramiko kılavuzu değil ve aracın ne yaptığıyla ilgili ayrıntılara da girmiyoruz. Amaç, size uygulamasını göstermekti.

Daha fazla bilgi için lütfen aşağıdakiler gibi daha kapsamlı materyallere bakın:

https://docs.paramiko.kuruluş/tr/kararlı/
https://github.com/paramiko/paramiko

Netmiko nedir?

Netmiko çok popülerdir ve birkaç önemli farkla Paramiko'ya benzer:

Gerçek dünya ağları üzerinde çalışırken çeşitli cihaz modelleriyle karşılaşacaksınız. Bu nedenle, süreci otomatikleştirmenize yardımcı olabilecek güvenilir bir araca ihtiyacınız var. Bazı durumlarda, cihaz desteği sınırlamaları nedeniyle Paramiko'yu kullanamazsınız, bu da gecikmelere ve çökmelere neden olur - resmi belgelerde desteklenen cihazları kontrol edebilirsiniz. Ayrıca Netmiko'dan oldukça yavaştır.

Paramiko, belirli SSH görevlerini otomatikleştirmek için kullanabileceğiniz daha genel bir SSH modülüdür. Buna karşılık Netmiko, anahtarlar ve yönlendiriciler gibi ağ cihazlarını yönetmek için daha geniş ve iyi optimize edilmiştir.

Netmiko kullanmanın diğer bir avantajı da soyutlamadır. Netmiko, sayfalamayı devre dışı bırakmak için kullanabileceğiniz basit bir işlev sağlar. Örneğin, SSH oturumundan bir çıktı birden fazla sayfa olabilir. Normal SSH oturumlarını kullanarak, sonraki sayfayı göstermek için giriş benzeri bir alan eklemeniz gerekecek. Netmiko size bunu geçersiz kılmanın bir yolunu sunar.

Netmiko'nun Paramiko'ya göre avantajları şunlardır:

Netmiko Nasıl Kurulur

Netmiko'yu kurmak da nispeten kolaydır:

Tek yapmanız gereken, sisteminizde Python ve pip'in kurulu olduğundan emin olmak ve şu komutu yürütmek:

pip kurulum netmiko
piton -m pip netmiko yükleyin

Netmiko kullanarak SSH'ye bağlanma

Netmiko kullanarak cihaz SSH oturumlarına bağlanmak çok basittir. Netmiko'nun genel SSH için değil, yönlendiriciler gibi cihazlar için daha optimize edildiğini unutmayın.

Aşağıdaki kod parçasını göz önünde bulundurun.

#import modülleri
netmiko import ConnectHandler'dan
# cihaz bilgisi sözlük biçiminde.
device_config =
"device_type": "cisco_ios",
"ip": "192.168.0.1”,
"kullanıcı adı": "yönetici",
"şifre": "şifre",
"gizli": "şifre"

bağlantı = ConnectHandler(**device_config)

Yukarıdaki basit kodu kullanarak cihaza bir SSH bağlantınız olacaktır. Cihaz bilgilerini bir sözlüğe aktarmak yerine doğrudan iletebilirsiniz.

Bir SSH oturumunuz olduğunda, send_command() işlevini kullanarak komutları çalıştırabilirsiniz. netmiko tarafından desteklenen işlevler şunları içerir:

Netmiko yaygın olarak kullanılan yöntemler:

Daha önce belirtildiği gibi, bu Netmiko'nun nasıl kullanılacağına dair bir rehber değil, Netmiko ve Paramiko'nun ne olduğuna dair basit bir yönlendirmedir. Daha fazla bilgi için resmi belgelere bakın.

https://github.com/ktbyers/netmiko

Sonuç

Bu hızlı kılavuzda, ikisi arasındaki farkları gösteren genel SSH bağlantıları ve Netmiko ağ cihazı yönetimi için paramiko'nun nasıl kullanılacağını tartıştık.

Sonuçlandırmak için:

paramiko netmiko
Genel ssh kullanımı için kullanışlıdır Ağ cihazı yapılandırması için en kullanışlı.
Çok çeşitli ağ cihazları için sınırlı destek. Çok çeşitli ağ cihazlarını destekler.
Ubuntu'da Oynanacak En İyi 10 Oyun
Windows platformu, günümüzde doğal olarak Windows'u desteklemek için geliştirilen oyunların büyük bir yüzdesi nedeniyle oyun oynamak için hakim platfo...
Linux için En İyi 5 Arcade Oyunu
Günümüzde bilgisayarlar oyun oynamak için kullanılan ciddi makinelerdir. Yeni yüksek puanı alamazsan, ne demek istediğimi anlayacaksın. Bu yazıda, bug...
Wesnoth 1 Savaşı.13.6 Geliştirme Yayınlandı
Wesnoth 1 Savaşı.13.Geçen ay yayınlanan 6. sürüm, 1. sürümdeki altıncı geliştirme sürümüdür.13.x serisi ve özellikle kullanıcı arayüzü için bir dizi i...