NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 3
SOFTWARE PENDUKUNG
GNS3 GUI
GNS3 VM
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 4
INSTALASI GNS3
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 5
Tunggu sejenak sembari VMware mengimport GNS3 VM,
bukalah GNS3 kita ya teman-teman ...
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 6
3. Balik ke VMware, kita akan sedikit konfig hostname
di GNS3, sebab pada file IOURC kita harus
menyamakannya dengan hostname di VMware GNS3
VM kita.
ketikkan perintah :
sudo su
nano /etc/hostname
ubah menjadi gns3-iouvm
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 7
5. Saatnya kita import file IOU yang sudah kita
download diawal, filenya terdiri dari
i86bi-linux-l2-adventerprisek9-15.1a.bin,
i86bi-linux-l3-adventerprisek9-15.2.4M1.bin, dan
IOURC.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 8
Pilih Server type "Run the IOU on the GNS3 VM".
Beri nama sesuai selera, Pilih New Image, klo router type nya
kita pilih L3 Image, klo switch type nya kita pilih L2 Image,
browse file IOU Image nya, terakhir klik finish.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 9
Selamat, router IOU kita sudah siap untuk digunakan.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 10
INSTALASI GNS3
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 11
kemudian lakukan update dan install paket Python.
# apt-get update
# apt-get install Python
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 12
INSTALASI GNS3
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 13
2. Setelah selesai impor selanjutnya seret Network
Automation Appliance ke wordspace project gns3. Pada saat
diseret ke wordspace maka appliance ini akan otomatis
pulling image (mengunduh file data) yang dibutuhkan oleh
appliance ini (cuman pertama kali saja kok :D).
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 14
INSTALASI GNS3
root@hanker-Inspiron-3443:/home/hanker#
apt install uml-utilities
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 15
INSTALASI GNS3
1. Buka hdwwiz.exe
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 16
3. Kemudian pilih “Network adapters”. Next.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 17
5. Klik Finish, dan Selamat interface loopback anda sudah
siap digunakan.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 18
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 19
INTRO TO Python
HARUSKAH NETWORK ENGINEER BELAJAR
CODING ?
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 20
Python INTERACTIVE INTERPRETER
Coba sekali lagi ya, kali ini kita akan membuat banner.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 21
MEMAHAMI TIPE DATA Python
Berikut tipe data yang akan kita pelajari pada bab kali ini.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 22
MEMAHAMI TIPE DATA Python
Belajar String
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 23
Menggunakan strip()
Menggunakan isdigit()
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 24
Menggunakan count()
Menggunakan format()
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 25
Menggunakan join() dan split()
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 26
MEMAHAMI TIPE DATA Python
Belajar Number
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 27
MEMAHAMI TIPE DATA Python
Belajar Boolean
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 28
MEMAHAMI TIPE DATA Python
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 29
BELAJAR LIST Python
Menggunakan append()
Menggunakan insert()
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 30
BELAJAR LIST Python
Menggunakan count()
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 31
Apabila ingin menghapus data tertentu bisa menggunakan
command “ .pop(urutan data)”.
Menggunakan sort()
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 32
MEMAHAMI Python DICTIONARIES
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 33
MEMAHAMI Python DICTIONARIES
Menggunakan built-in
Menggunakan get()
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 34
MEMAHAMI Python DICTIONARIES
Menggunakan pop()
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 35
MEMAHAMI Python DICTIONARIES
Menggunakan update()
Menggunakan items()
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 36
MEMAHAMI SETS DAN TUPLES Python
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 37
MENAMBAHKAN LOGIKA KONDISIONAL
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 38
MEMAHAMI CONTAINMENT
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 39
MENGGUNAKAN LOOPS PADA Python
Finally kita sampai ke loops, loops ini nanti akan sering kita
pakai khususnya pada network programming. Mulailah
untuk berpikir tentang list dari device, ip address, Vlan, dan
interface.
Kita akan belajar dua tipe utama dari loops yakni for loop
dan while loop.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 40
MENGGUNAKAN LOOPS PADA Python
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 41
MENGGUNAKAN LOOPS PADA Python
Contoh kode diatas merupakan tipe dari for loop yang sering
dikenal dengan nama for-in atau for-each loop.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 42
Kali ini kita akan mendefinisikan sebuah list baru dari vendor.
Lalu mendefinisikan approved_vendors. Jadi intinya ada list
vendor dan list approved_vendors, kita akan mencetak list
dari tidak masuk dalam approved_vendors.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 43
Step selanjutnya adalah menggunakan for loop pada
CONFIG_PARAMS, jadi seperti ini kurang lebih.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 44
MENGGUNAKAN FUNCTIONS Python
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 45
Okey, sudah bisakan? Sekarang kita kembali ke VLAN tadi.
Kita akan membuat script untuk membantu kita dalam
otomasi VLAN.
Misal kita akan konfig tiga device switch maka kita buat dulu
listnya seperti ini.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 46
Jika sudah saatnya membuat data vlan yang akan dikirim ke
switch.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 47
BEKERJA DENGAN FILE
Membaca File
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 48
Contoh diatas membaca semua file sebagai objek str komplit
menggunakan metode read().
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 49
BEKERJA DENGAN FILE
Menulis File
Objek vlan yang sebelumnya sudah dibuat kita pakai lagi ya.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 50
menuliskannya data tersebut ke dalam file, terakhir filenya
ditutup/closed.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 51
MEMBUAT PROGRAM Python
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 52
MEMBUAT PROGRAM Python
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 53
Okey jadi seperti ini scriptnya ...
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 54
MEMBUAT PROGRAM Python
Memahami Shebang
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 55
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 56
Python LAB 1
Step :
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 57
2. Konfigurasi detail telnet R1 terlebih dahulu, sebagai
contoh :
R1(config)#int f0/0
R1(config-if)#ip address dhcp
R1(config-if)#no shutdown
root@Ubuntu#apt update
root@Ubuntu#apt install Python
import getpass
import sys
import telnetlib
HOST = "192.168.122.2"
user = raw_input("Enter your telnet username: ")
password = getpass.getpass()
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 58
tn = telnetlib.Telnet(HOST)
tn.read_until("Username: ")
tn.write(user + "\n")
if password:
tn.read_until("Password: ")
tn.write(password + "\n")
tn.write("enable\n")
tn.write("cisco\n")
tn.write("conf t\n")
tn.write("int loop 0\n")
tn.write("ip address 1.1.1.1 255.255.255.255\n")
tn.write("end\n")
tn.write("exit\n")
print tn.read_all()
root@Ubuntu#Python Pythonq
R1#debug telnet
Incoming Telnet debugging is on
R1#
*Jan 21 21:59:03.947: Telnet2: 1 1 251 1
*Jan 21 21:59:03.951: TCP2: Telnet sent WILL ECHO (1)
*Jan 21 21:59:03.951: Telnet2: 2 2 251 3
*Jan 21 21:59:03.951: TCP2: Telnet sent WILL
SUPPRESS-GA (3)
*Jan 21 21:59:03.951: Telnet2: 80000 80000 253 24
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 59
*Jan 21 21:59:03.951: TCP2: Telnet sent DO TTY-TYPE
(24)
*Jan 21 21:59:03.951: Telnet2: 10000000 10000000 253
31
*Jan 21 21:59:03.955: TCP2: Telnet sent DO WINDOW-SIZE
(31)
*Jan 21 21:59:04.075: TCP2: Telnet received DONT ECHO
(1)
*Jan 21 21:59:04.075: TCP2: Telnet sent WONT ECHO (1)
*Jan 21 21:59:04.163: TCP2: Telnet received DONT
SUPPRESS-GA (3)
*Jan 21 21:59:04.163: TCP2: Telnet sent WONT
SUPPRESS-GA (3)
R1#
*Jan 21 21:59:04.167: TCP2: Telnet received WONT
TTY-TYPE (24)
*Jan 21 21:59:04.167: TCP2: Telnet sent DONT TTY-TYPE
(24)
*Jan 21 21:59:04.167: TCP2: Telnet received WONT
WINDOW-SIZE (31)
*Jan 21 21:59:04.171: TCP2: Telnet sent DONT
WINDOW-SIZE (31)
*Jan 21 21:59:04.267: TCP2: Telnet received DONT ECHO
(1)
*Jan 21 21:59:04.515: TCP2: Telnet received DONT
SUPPRESS-GA (3)
*Jan 21 21:59:04.515: TCP2: Telnet received WONT
TTY-TYPE (24)
*Jan 21 21:59:04.519: TCP2: Telnet received WONT
WINDOW-SIZE (31)
*Jan 21 21:59:05.447: %SYS-5-CONFIG_I: Configured
from console by david on vty0 (192.168.122.147)
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 60
Lalu cek ip address apakah interface loopback 0 sudah
terkonfigurasi atau belum.
R1#show ip int br
Interface IP-Address OK? Method
Status Protocol
FastEthernet0/0 192.168.122.2 YES DHCP
up up
FastEthernet1/0 unassigned YES unset
administratively down down
FastEthernet1/1 unassigned YES unset
administratively down down
Serial2/0 unassigned YES unset
administratively down down
Serial2/1 unassigned YES unset
administratively down down
Serial2/2 unassigned YES unset
administratively down down
Serial2/3 unassigned YES unset
administratively down down
Loopback0 1.1.1.1 YES manual
up up
Nah, dari sini kita bisa kreasi misal membuat vlan dsb,
dengan Python kita bisa membuat script untuk semua device
yang kita handle.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 61
Python LAB 2
Membuat VLAN pada Switch
S1(config)#int e0/0
S1(config-if)#no switchport
S1(config-if)#ip add 10.200.200.2 255.255.255.0
S1(config-if)#do ping 10.200.200.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.200.200.1,
timeout is 2 seconds:
.!!!!
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 62
Success rate is 80 percent (4/5), round-trip
min/avg/max = 1/2/5 ms
import getpass
import sys
import telnetlib
HOST = "10.200.200.2"
user = raw_input("Enter your telnet username: ")
password = getpass.getpass()
tn = telnetlib.Telnet(HOST)
tn.read_until("Usernmae: ")
tn.write(user + "\n")
if password:
tn.read_untill("Password: ")
tn.write(password + "\n")
tn.write("enable\n")
tn.write("cisco\n")
tn.write("conf t\n")
tn.write("vlan 20\n")
tn.write("name Python_VLAN_20\n")
tn.write("vlan 30\n")
tn.write("name Python_VLAN_30\n")
tn.write("vlan 40\")
tn.write("name Python_VLAN_40\n")
tn.write("exit\n")
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 63
tn.write("end\n")
tn.write("exit\n")
print tn.read_all()
S1>enable
Password:
S1#conf t
Enter configuration commands, one per line. End
with CNTL/Z.
S1(config)#vlan 20
S1(config-vlan)#name Python_VLAN_20
S1(config-vlan)#vlan 30
S1(config-vlan)#name Python_VLAN_30
S1(config-vlan)#vlan 40
S1(config-vlan)#name Python_VLAN_40
S1(config-vlan)#exit
S1(config)#end
S1#exit
root@gns3-iouvm:/home/gns3#
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 64
S1#
*Jan 22 10:03:48.365: Telnet2: 1 1 251 1
*Jan 22 10:03:48.365: TCP2: Telnet sent WILL ECHO
(1)
*Jan 22 10:03:48.365: Telnet2: 2 2 251 3
*Jan 22 10:03:48.365: TCP2: Telnet sent WILL
SUPPRESS-GA (3)
*Jan 22 10:03:48.365: Telnet2: 80000 80000 253 24
*Jan 22 10:03:48.365: TCP2: Telnet sent DO
TTY-TYPE (24)
*Jan 22 10:03:48.365: Telnet2: 10000000 10000000
253 31
*Jan 22 10:03:48.365: TCP2: Telnet sent DO
WINDOW-SIZE (31)
*Jan 22 10:03:48.370: TCP2: Telnet received DONT
ECHO (1)
*Jan 22 10:03:48.370: TCP2: Telnet sent WONT ECHO
(1)
*Jan 22 10:03:48.375: TCP2: Telnet received DONT
SUPPRESS-GA (3)
*Jan 22 10:03:48.375: TCP2: Telnet sent WONT
SUPPRESS-GA (3)
*Jan 22 10:03:48.375: TCP2: Telnet received WONT
TTY-TYPE (24)
*Jan 22 10:03:48.375: TCP2: Telnet sent DONT
TTY-TYPE (24)
*Jan 22 10:03:48.375: TCP2: Telnet received WONT
WINDOW-SIZE (31)
*Jan 22 10:03:48.375: TCP2: Telnet sent DONT
WINDOW-SIZE (31)
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 65
*Jan 22 10:03:48.399: TCP2: Telnet received DONT
ECHO (1)
*Jan 22 10:03:48.399: TCP2: Telnet received DONT
SUPPRESS-GA (3)
*Jan 22 10:03:48.399: TCP2: Telnet received WONT
TTY-TYPE (24)
*Jan 22 10:03:48.399: TCP2: Telnet received WONT
WINDOW-SIZE (31)
S1#
*Jan 22 10:03:48.961: %SYS-5-CONFIG_I:
Configured from console by rama on vty0
(10.200.200.1)
S1#show vlan br
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 66
Python LAB 3
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 67
2. Rubah level file menjadi administrator
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 68
Untuk membuktikan script ini bekerja maka rubah vlan pada
script misal penambahan database vlan baru. Misal kita
menambahkan vlan 50-70.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 69
So far berjalan dengan lancar, terlihat dari hasil script diatas,
enable password sudah tidak meminta password lagi,
langsung bisa masuk ke configure terminal.
Saatnya cek debug telnet pada S1. Dan hasilnya lancar nih,
sukses menambahkan vlan 50,60 dan 70 pada database vlan
pada S1.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 70
Python LAB 4
Pada lab 3 apabila kita ingin membuat vlan 1-10 maka harus
mengetikan manual vlan1-10 pada script Python, namun
dengan menggunakan fungsi loop kita tinggal menggunakan
fungsi for sebagai contoh.
root@hanker-Inspiron-3443:/home/hanker# nano
vlan.py
#!/usr/bin/env Python
import getpass
import sys
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 71
import telnetlib
HOST = "10.200.200.1"
user = raw_input("Enter your telnet username: ")
password = getpass.getpass()
tn = telnetlib.Telnet(HOST)
tn.read_until("Username: ")
tn.write(user + "\n")
if password:
tn.read_until("Password: ")
tn.write(password + "\n")
tn.write("conf t\n")
tn.write("end\n")
tn.write("exit\n")
print tn.read_all()
root@hanker-Inspiron-3443:/home/hanker# chmod
+x vlan.py
root@hanker-Inspiron-3443:/home/hanker# Python
vlan.py
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 72
Vlan 2 sampai 100 sudah berhasil dibuat secara otomatis
pastinya menggunakan script Python dengan fungsi loop.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 73
Python LAB 5
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 74
S4#debug telnet
Incoming Telnet debugging is on
#!/usr/bin/env Python
import getpass
import sys
import telnetlib
tn.read_until("Username: ")
tn.write(user + "\n")
if password:
tn.read_until("Password: ")
tn.write(password + "\n")
tn.write("conf t\n")
tn.write("end\n")
tn.write("exit\n")
print tn.read_all()
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 75
4. Jalankan script Python multivlan.py dan isi username dan
password cisco switch sesuai yang kita atur.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 76
Switch 1-4 berhasil dikonfigurasi vlannya, terlihat pada
output Python telnet to host 2 dan sampai pada telnet to host
5. Dengan menggunakan script ini tentunya kita tidak perlu
lagi config satu per satu device cisco.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 77
Python LAB 6
#!/usr/bin/env Python
import getpass
import sys
import telnetlib
tn.read_until("Username: ")
tn.write(user + "\n")
if password:
tn.read_until("Password: ")
tn.write(password + "\n")
tn.write("conf t\n")
tn.write("end\n")
tn.write("write\n")
tn.write("exit\n")
print tn.read_all()
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 78
Python LAB 7
root@hanker-Inspiron-3443:/home/hanker# nano
myswitches
10.200.200.2
10.200.200.3
10.200.200.4
10.200.200.5
root@hanker-Inspiron-3443:/home/hanker# nano
testloop.py
f = open('myswitches')
for line in f:
print(line)
f.close()
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 79
Jalankan script testloop.py
root@hanker-Inspiron-3443:/home/hanker# Python
testloop.py
outputnya
10.200.200.2
10.200.200.3
10.200.200.4
10.200.200.5
root@hanker-Inspiron-3443:/home/hanker# nano
vlanopenfile.py
#!/usr/bin/env Python
import getpass
import sys
import telnetlib
f = open ('myswitches')
for line in f:
print "Configuring Switch " + (line)
HOST = line
tn = telnetlib.Telnet(HOST)
tn.read_until("Username: ")
tn.write(user + "\n")
if password:
tn.read_until("Password: ")
tn.write(password + "\n")
tn.write("conf t\n")
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 80
tn.write("end\n")
tn.write("exit\n")
print tn.read_all()
root@hanker-Inspiron-3443:/home/hanker# Python
vlanopenfile.py
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 81
Python LAB 8
Pada lab 7 kita membuat multi vlan pada multi switch, nah
kali ini kita akan mencoba backup konfigurasi tersebut tanpa
harus membuka satu persatu terminal switch, dengan
menggunakan script backup.
#!/usr/bin/env Python
import getpass
#import sys
import telnetlib
tn.read_until("Username: ")
tn.write(user + "\n")
if password:
tn.read_until("Password: ")
tn.write(password + "\n")
readoutput = tn.read_all()
saveoutput = open("switch" + HOST, "w")
saveoutput.write(readoutput)
saveoutput.write("\n")
saveoutput.close
print tn.read_all()
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 82
root@hanker-Inspiron-3443:/home/hanker# chmod +x backupvlan.py
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 83
Python LAB 9
Jupyter IDE
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 84
Untuk dapat menjalankan Jupyter pertama kali harus
mengunduh (pulling) image dari repo gns3, jadi pastikan
internet yang terhubung berjalan dengan baik.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 85
seperti pada Lab 1 yang membedakan adalah kali ini
controller yang digunakan adalah Web Based Jupyter.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 86
Maka akan muncul jendela baru dibrowser. Inilah jendela
Python notebook yang digunakan untuk membuat script
Python.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 87
import getpass
import sys
import telnetlib
HOST = "172.16.100.1"
user = “rama”
password = “cisco”
tn = telnetlib.Telnet(HOST)
tn.read_until("Username: ")
tn.write(user + "\n")
if password:
tn.read_until("Password: ")
tn.write(password + "\n")
tn.write("conf t\n")
tn.write("int loop 0\n")
tn.write("ip address 1.1.1.1 255.255.255.255\n")
tn.write("end\n")
tn.write("exit\n")
print tn.read_all()
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 88
Apabila output seperti pada gambar diatas sudah muncul,
berarti script Jupyter sudah berhasil, sekarang bisa verifikasi
di cisco router.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 89
Python LAB 10
Paramiko
ip domain-name rama.id
crypto key generate rsa
1024
enable password cisco
username rama password cisco
username rama priv 15
line vty 0 4
login local
trans input all
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 90
3. Lanjut ke scripting Python, sekarang kita buat script
Python bernama paramiko1.py
import paramiko
import time
ip_address = "10.200.200.2"
username = "rama"
password = "cisco"
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip_address,username=username,password=password)
remote_connection = ssh_client.invoke_shell()
remote_connection.send("configure terminal\n")
remote_connection.send("int loop 0\n")
remote_connection.send("ip address 12.12.12.12 255.255.255.255\n")
remote_connection.send("int loop 1\n")
remote_connection.send("ip address 3.3.3.3 255.255.255.255\n")
remote_connection.send("router ospf 1\n")
remote_connection.send("network 0.0.0.0 255.255.255.255 area 0\n")
remote_connection.send("end\n")
time.sleep(1)
output = remote_connection.recv(65535)
print output
ssh_client.close
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 91
4. Sekarang running script paramiko1.py
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 92
Python LAB 11
Netmiko 1
root@hanker-Inspiron-3443:/home/hanker# sudo
/usr/local/bin/pip2.7 install netmiko
ip domain-name rama.id
crypto key generate rsa
1024
enable password cisco
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 93
username rama password cisco
username rama priv 15
line vty 0 4
login local
trans input all
#!/usr/bin/env Python
iosv_l3 = {
'device_type': 'cisco_ios',
'ip': '10.200.200.2',
'username': 'rama',
'password': 'cisco',
}
net_connect = ConnectHandler(**iosv_l3)
#net_connect.find_prompt()
output = net_connect.send_command('show ip int brief')
print output
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 94
4. Sekarang running script netmiko1.py
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 95
Python LAB 12
Netmiko 2
Lab kedua Netmiko kali ini kita akan running tiga buah l3
switch yang terhubung ke satu buah switch yang terhubung
langsung ke controller Ubuntu. Pada tiga buah switch
tersebut kita akan push config create vlan 2-11.
ip domain-name rama.id
crypto key generate rsa
1024
enable password cisco
username rama password cisco
username rama priv 15
line vty 0 4
login local
trans input all
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 96
2. Buat script netmiko dengan nama netmiko2.py
#!/usr/bin/env Python
iosv_l3_s1 = {
'device_type': 'cisco_ios',
'ip': '10.200.200.2',
'username': 'rama',
'password': 'cisco',
}
iosv_l3_s2 = {
'device_type': 'cisco_ios',
'ip': '10.200.200.3',
'username': 'rama',
'password': 'cisco',
}
iosv_l3_s3 = {
'device_type': 'cisco_ios',
'ip': '10.200.200.4',
'username': 'rama',
'password': 'cisco',
}
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 97
3. Running script netmiko2.py
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 98
S1-S3 berhasil terkonfigurasi vlan2-10.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 99
Python LAB 13
Netmiko 3
Step-step :
ip domain-name rama.id
crypto key generate rsa
1024
enable password cisco
username rama password cisco
username rama priv 15
line vty 0 4
login local
trans input all
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 100
2. Sekarang kita buat script command cisco ios yang nanti
dipanggil oleh script python netmiko. Misal kita buat dengan
nama “cisco_config”.
#! /usr/bin/env python
ios_s1 = {
'device_type': 'cisco_ios',
'ip': '10.200.200.2',
'username': 'rama',
'password': 'cisco',
}
ios_s2 = {
'device_type': 'cisco_ios',
'ip': '10.200.200.3',
'username': 'rama',
'password': 'cisco',
}
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 101
ios_s3 = {
'device_type': 'cisco_ios',
'ip': '10.200.200.4',
'username': 'rama',
'password': 'cisco',
}
ios_s4 = {
'device_type': 'cisco_ios',
'ip': '10.200.200.5',
'username': 'rama',
'password': 'cisco',
}
with open('cisco_config') as f:
lines = f.read().splitlines()
print lines
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 102
4. Jalankan script netmiko.py, kemudian akan terlihat output
seperti dibawah ini. Ini berarti netmiko berhasil push
command dari file cisco_config ke S1-S4.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 103
Python LAB 14
Netmiko 4
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 104
ip domain-name rama.id
crypto key generate rsa
1024
enable password cisco
username rama password cisco
username rama priv 15
line vty 0 4
login local
trans input all
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 105
Simpan sebagai netmiko4.py
Untuk S3
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 106
Untuk S4
Untuk S5
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 107
4. Selanjutnya kita running script netmiko4.py, maka seperti
ini outputnya.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 108
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 109
Python LAB 15
Netmiko 5
ip domain-name rama.id
crypto key generate rsa
1024
enable password cisco
username rama password cisco
username rama priv 15
line vty 0 4
login local
trans input all
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 110
2. Kita buat script netmiko yang berisi push config
berdasarkan core dan access switch. Beri nama netmiko5.py
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 111
3. Selanjutnya buat file config untuk core dan access switch.
Terakhir “access_switch”
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 112
4. Running script netmiko5.py, outputnya seperti ini.
NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 113