Network Automation with Paramiko

Assalamualaikum Wr. Wb.

Pada kali ini saya akan membagikan informasi dan pengetahuan tentang Network Automation dengan menggunakan tools Paramiko. Seperti penjelasan sebelumya, cuma perbedaan dengan kali ini saya menggunakan tools Paramiko. Paramiko merupakan salah satu library pada python yang bisa kita gunakan sebagai SSHv2 server maupun client. Adapun pada blog kali ini, kita akan memanfaatkan paramiko sebagai ssh client. Untuk info lebih lanjut tentang Paramiko, Anda bisa mengunjungi website resmi paramiko disini atau website dokumentasinya disini .

Persiapan :

Software > GNS3, Image IOU/ IOS (Switch dan Router), Windows/ Linux/ MacOs.

Hardware > RAM 4 GB (minimal), Core i5.

Langkah- Langkah :

Pertama, gunakan appliance Network Automation pada GNS3 anda, jika anda belum download anda bisa mendownload-nya disini . Jika paramiko sudah ada, anda bisa memastikan dengan perintah ini “pip show paramiko” (tanpa tanda petik) maka akan keluar jendela seperti berikut :

2
paramiko tools

Kedua, kita akan melakukan konfigurasi pada SSH dengan paramiko ini. Disini saya menggunakan topologi seperti ini :

8
Topologi Jaringan SSH

Sebelumnya kita harus melakukan konfigurasi pada router terlebih dahulu, masuk pada routernya dan ketikkan seperti pada gambar dibawah ini : (saya berasumsi anda sudah konfigurasi IP Address pada router dan servernya)

conf t
hostname IOU-R1
interface <eth>
ip address <addr> <subnetmask>
exit
username secret username privillage 15
ip domain-name
crypto key generate rsa modulus 1024
line vty 0 4
transpot input ssh
login local
end
write

Setelah itu, masuk pada komputer server dan lakukan ssh pada router anda. Jika berhasil akan tampak seperti pada gambar berikut ini :

9
SSH Client

Selanjutnya, kita akan melakukan otomasi jaringan pada router tersebut, gunakan script berikut dan simpan pada server anda dengan format nama : (bebas_ selain paramiko). Karena nama paramiko sudah termasuk pada bagian module paramiko.

import paramiko
import time

ip_address = “192.168.122.4”
username = “imron”
password = “123”

ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip_address,username=username, password=password)

print “Success login to {0}”.format(ip_address)
conn = ssh_client.invoke_shell()

conn.send(“conf t\n”)
conn.send(“int lo0\n”)
conn.send(“ip add 1.1.1.1 255.255.255.255\n”)
time.sleep(1)
output = conn.recv(65535)
print output
ssh_client.close()

Jalankan file tersebut dengan perintah “python ” (tanpa tanda petik). Jika berhasil akan keluar seperti pada gambar dibawah ini :

10
Hasil otomasi script pertama

Kedua, kita akan melakukan otomasi selanjutnya dengan cara backup config pada salah satu router yang sudah gunakan sebelumnya. Berikut script nya :

import paramiko
import time

ip_address = “192.168.122.3”
username = “imron”
password = “123”

ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip_address,username=username, password=password)

print “Success login to {0}”.format(ip_address)
conn = ssh_client.invoke_shell()

conn.send(“terminal length 0\n”)
conn.send(“show run\n”)
conn.send(“conf t\n”)
time.sleep(1)
output = conn.recv(65535)

output_file=open(“{0}.cfg”.format(ip_address),”w”)
output_file.write(output)
output_file.close()
print “Config in {0} saved!!”.format(ip_address)

ssh_client.close()

Jika berhasil, akan keluar seperti berikut ini :

12
Hasil otomasi script kedua

Ketiga, kita akan melakukan backup config pada banyak device (multiple device). Dengan script python berikut ini kita bisa membuat script sederhana tetapi dampaknya akan luar biasa. Sebelumnya, buatlah topologi yang anda inginkan, misalnya seperti berikut ini :

13
Topologi Multiple Device untuk Backup Config

Berikut scriptnya :

import paramiko
import time

ip_list=[“192.168.122.3″,”192.168.122.4″,”192.168.122.5″,”192.168.122.6”,”192.1$
username = “imron”
password = “123”

ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

for ip_address in ip_list:
ssh_client.connect(hostname=ip_address,
username=username,
password=password)

print “Success login to {0}”.format(ip_address)
conn = ssh_client.invoke_shell()

conn.send(“terminal length 0\n”)
conn.send(“show run\n”)
time.sleep(1)

output = conn.recv(65535)
output_file=open(“{0}.cfg”.format(ip_address),”w”)
output_file.write(output)
output_file.close()
print “Config in {0} saved!!”.format(ip_address)

ssh_client.close()

Jalankan kode tersebut, jika berhasil maka akan tampil seperti gambar berikut ini :

14
Hasil otomasi script ketiga

Keempat, yang terakhir kita akan mengubah port default dari ssh (22) untuk keamanan, jadi jika mau ssh pada router kita misalnya harus menambahkan opsi port yang sudah kita ubah, tapi itu juga bisa dilakukan otomasinya loh, sebelumnya anda harus membuat port berapa yang akan dipakai pada router tersebut. Berikut konfigurasinya :

ip ssh port 2222 rotary 1
ip access-list extended DenyDefaultSSH
deny tcp any any eq 22
permit ip any any
exit

line vty 0 4
rotary 1
access-class DenyDefaultSSH in
exit

Setelah anda membuat konfigurasi, Coba untuk melakukan ssh pada router anda. Maka otomatis koneksi akan ditolak seperti gambar berikut ini :

17
Koneksi ditolak pada router

Tenang, kita akan tetap masuk SSH pada router tersebut tanpa harus mengetikkan port pada perintah, akan tetapi kita menambahkannya lewat script, berikut scriptnya :

import paramiko
import time

ip_address = “192.168.3.2”
username = “imron”
password = “123”

ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh_client.connect(hostname=ip_address,
username=username,
password=password,
port=2222)

print “Success login to {0}”.format(ip_address)
conn = ssh_client.invoke_shell()

conn.send(“terminal length 0\n”)
conn.send(“show ip int brief | i up\n”)
time.sleep(1)

output = conn.recv(65535)
print output

ssh_client.close()

Jika berhasil, akan tampil seperti pada gambar berikut ini :

18
Hasil otomasi pada script keempat

Alhamdulillah, cukup sekian semoga bermanfaat. Sampai jumpa pada blog selanjutnya. Terimakasih.

Referensi : Rosid Komarudin, Ahmad. 2018. Otomatisasi Administrasi Jaringan Dengan Script Python. Jakarta: Jasakom

Advertisements

3 thoughts on “Network Automation with Paramiko

  1. Pingback: Meetup Ngedabrus #6 KLiM : Otomatisasi Jaringan dengan Paramiko – Kureview

  2. Pingback: Network Automation with Netmiko – Berbagi Ilmu itu indah

  3. Pingback: Selayang Pandang Lokakarya Otomasi Jaringan dengan Paramiko – Kelompok Linux Arek Suroboyo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.