Anda di halaman 1dari 113

NETWORK AUTOMATION & PROGRAMMING – Dept Network UKM PCC 2018 2

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 3
SOFTWARE PENDUKUNG

GNS3 GUI, GNS3VM, GNS3 APPLIANCE, CISCO IOU,


Python, UBUNTU DOCKER

GNS3 GUI

GNS3 VM

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 4
INSTALASI GNS3

Integrasi GNS3 VM ke GNS3

Siapkan file berikut:


- GNS3 v2.0.3 (bebas sesuai yang ada dilaptop)
- GNS3 VM v2.0.3 (harus sesuai dengan versi GNS3 kita)
- VMware atau VirtualBox
- L2 L3 IOU Images (File image IOU switch dan router)

Rekomendasi Laptop/Komputer untuk dapat menjalankan


seluruh lab yang ada dibuku ini adalah :
- Ubuntu 16.04 atau Windows 8/10
- Memory 4 GB
- HDD free space 20GB
- Processor Intel Corei3

1. Mari kita mulai ya, pertama buka file GNS3 VM yang


sudah kita download.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 5
Tunggu sejenak sembari VMware mengimport GNS3 VM,
bukalah GNS3 kita ya teman-teman ...

2. Tahap kedua ini kita akan masuk ke integrasi GNS3


VM ke GNS3.

Masuk ke tab Edit, pilih Preferences

Pilih Server, lalu masuk ke Local GNS3 VM, centang Enable


the local GNS3 VM, pilih VMware, pilih GNS3 VM yang telah
kita import sebelumnya. Terakhir klik Apply.

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

4. Kalau sudah kita kembali ke GNS3 lagi, kita setting


integrasi IOURC dengan GNS3 kita, fungsi IOURC ini
seperti license file nya IOU yang akan kita gunakan kali
ini.

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.

Masuk ke Edit, pilih Preferences, kita tambahkan template


IOU Device.

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.

Keunggulan dari IOU Device yang menggunakan server


GNS3 VM adalah konsumsi resource yang sangat ringan,
cocok untuk kita yang sedang mengejar gelar CCNA, karena
biasanya butuh beberapa device.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 10
INSTALASI GNS3

Menambahkan Ubuntu Docker Container

Sebenarnya tidak perlu menggunakan ubuntu docker


container, sebab host pc sudah bisa running Python apabila
sudah terinstall Python seperti Host Ubuntu, Windows atau
Mac. Koneksi antara controller dengan device yang akan di
otomasi menggunakan loopback adapter.

1. Download appliance Ubuntu Docker Guest, kemudian


import di GNS3.

2. Setelah terpasang di GNS3 seret ke project, klik kanan


pada Ubuntu Docker pilih Edit config, disini kita bisa
mengatur pengalamatan ip Ubuntu Docker. Sebagai contoh
kita akan menggunakan DHCP yang sudah terhubung ke
internet via NAT.

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

Menambahkan Network Automation Container

Ketika menggunakan Ubuntu Docker maka setiap project


diclose dan dibuka lagi maka kita harus mengulangi langkah
apt-get update dan apt-get install Python sebab Ubuntu
Docker sifatnya post-installed jadi sebelum digunakan harus
di install paket-paket yang diinginkan sementara Network
Automation Container sifatnya pre-installed paket-paket
seperti Python dan ansible.

1. Setelah mengunduh, import Network Automation


Appliance.

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).

Nah, Network Automation Appliance sudah siap digunakan.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 14
INSTALASI GNS3

Menghubungkan Host Ubuntu dengan GNS3

Rekomendasi untuk menggunakan host Ubuntu, karena


dengan host Ubuntu running dengan GNS3 akan lebih
mudah dalam praktikum network automation dan
programming kali ini, install semua paket Python yang
dibutuhkan di host Ubuntu lalu tinggal hubungkan GNS3 ke
host Ubuntu menggunakan interface bridge tap0.

1. Install paket tuntap

root@hanker-Inspiron-3443:/home/hanker#
apt install uml-utilities

2. Kemudian lakukan konfigurasi seperti berikut.

3. Terakhir cek ifconfig Ubuntu kita.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 15
INSTALASI GNS3

Menghubungkan Host Windows dengan GNS3

Untuk bisa mengubungkan Host Windows GNS3 sama


konsepnya seperti pada Host Ubuntu yakni dengan
menggunakan interface loopback.

1. Buka hdwwiz.exe

2. Pilih “Install the hardware that i .... “, kemudian klik Next.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 16
3. Kemudian pilih “Network adapters”. Next.

4. Pilih Microsoft pada bagian Manufacturer, dan KM-TEST


Loopback pada Network Adapter. 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 ?

“Jaman udah berubah, wajib belajar“

Sebagai network engineer, sekarang adalah waktu yang tepat


untuk belajar otomasi dan menulis kode. Industri networking
dewasa ini sudah berubah. Sangat tidak mungkin untuk
menuliskan perintah CLI yang sama ke puluhan bahkan
ribuan device, saatnya untuk beralih ke otomasi.

Mengapa Python? Saat ini bahasa pemrograman yang


digunakan untuk menghubungkan device network APIs,
DevOps (Ansible, Salt, dan Pupper) adalah Python. So, wajib
sekali untuk eksplor lebih jauh mengenai Python. Pasti
muncul pertanyaan, hmm belum bisa coding nih sama sekali,
jawaban yang tepat adalah langsung action langsung
practical, sebagai analogi ketika kita berlatih menaiki sepeda
apakah kita terus berpikir aduh aku gak bisa naik sepeda,
namun ketika mencoba dan gagal, dari situ bisa belajar untuk
terus berlatih dan akhirnya bisa menaiki sepeda dengan
lancar.

Industri network sudah berubah, device kini mulai beralih ke


APIs, dan saatnya untuk memulai belajar menulis kode. Pada
materi intro kita akan belajar mengenai :

• Python interactive interpreter


• Memahami tipe data Python
• Menambahkan conditional logic ke kode
• Memahami containment
• Menggunakan loops pada Python
• Functions
• Bekerja dengan file
• Membuat program Python

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 20
Python INTERACTIVE INTERPRETER

Python interpreter ini sangat tepat sekali digunakan untuk


kita yang baru belajar pemrograman Python tanpa harus
menyimpan file karena dengan interpreter ini output
langsung bisa kita lihat. Saatnya kita mulai bermain dengan
Python.

Contoh kali ini menggunakan Ubuntu 16.04, untuk kalian


yang menggunakan Windows hampir sama stepnya kok.

Sekarang kita coba untuk membuat variabel hostname dan


mengubahnya ke ROUTER. Kemudian print kode yang kita
tulis menggunakan perintah print.

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

Pada bab ini kita akan mempelajari berbagai macam tipe


data Python termasuk string, number (integer dan float),
boolean, list, dan dictionaries juga tuple dan set.

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

String ini rangkaian karakter yang dibuka dengan tanda


quote dan merupakan tipe data yang dipastikan selalu ada
pada semua bahasa pemrograman.

Baik, sekarang kita mulai dengan mendefinisikan dua


variabel baru yang keduanya merupakan string: final dan
ipaddr.

Menggunakan upper() dan lower()

Sesuai dengan namanya, upper nantinya karakter yang kita


definisikan akan berubah ke karakter upper sementara lower
juga lower semua karakternya.

Menggunakan startswith() dan endswith()

startswith akan membaca karakter awal sementara endswith


akan membaca karakter paling akhir.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 23
Menggunakan strip()

Ketika kita akan menyimpan atau print sesuatu, pastinya


tidak menginginkan adanya whitespace wrapping pada
output/objek yang diinginkan. Untuk itu gunakanlah strip().

Menggunakan isdigit()

Sesuai dengan namanya, isdigit() berfungsi untuk


memastikan bahwa script/kode yang ditulis adalah digit
bukan huruf.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 24
Menggunakan count()

Sudah bisa ditebak bahwasanya berfungsi untuk menghitung,


kita bisa mendefinisikan variabel kemudian dihitung ada
berapa karakter tertentu yang ingin dihitung.

Menggunakan format()

Dengan menggunakan format(), output yang ditampilkan


bisa kita atur.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 25
Menggunakan join() dan split()

Berfungsi untuk menggabungkan dan memisahkan list


command atau kode yang dituliskan.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 26
MEMAHAMI TIPE DATA Python

Belajar Number

Operasi matematika menggunakan tanda yang mudah


dipahami seperti + (tambah); - (kurang); dll.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 27
MEMAHAMI TIPE DATA Python

Belajar Boolean

Boolean lebih kita kenali pada tabel kebenarannya, mudah


dipahami dan mudah dipraktekkan.

Sekarang kita coba untuk praktek boolean sederhana dengan


script sebagai berikut.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 28
MEMAHAMI TIPE DATA Python

Belajar List Python

Berkaitan dengan daftar/list data, diawal tadi kita sudah


belajar join() dan split().

Sekarang kita coba membuat daftar/list interface dan


menampilkannya menggunakan perintah print.

Untuk mengetahui berapa banyak sih list yang sudah dibuat,


kita bisa menggunakan perintah len.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 29
BELAJAR LIST Python

Menggunakan append()

Append() ini digunakan untuk menambahkan elemen ke list


yang sudah dibuat.

BELAJAR LIST Python

Menggunakan insert()

Insert ini lebih fleksibel, jadi kita bisa dengan mudahnya


menentukan posisi/letak data yang akan ditambahkan ke list
yang sudah dibuat, misal mau ditempatkan diurutan ke 2.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 30
BELAJAR LIST Python

Menggunakan count()

Seperti namanya, count() berfungsi untuk menghitung list


data yang sudah kita tulis.

BELAJAR LIST Python

Menggunakan pop() dan index()

pop() secara default akan menghapus data paling akhir


dalam list data yang sudah ada.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 31
Apabila ingin menghapus data tertentu bisa menggunakan
command “ .pop(urutan data)”.

index() berfungsi untuk mengetahui letak/urutan data dari


list data yang sudah ada. Misal kita ingin mengetahui urutan
data ‘r5’.

BELAJAR LIST Python

Menggunakan sort()

Sesuai dengan namanya sort() berfungsi untuk menyortir


atau mengurutkan yang sebelumnya belum urut.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 32
MEMAHAMI Python DICTIONARIES

Sebelumnya kita sudah belajar mengenai tipe data, termasuk


string, integer/number, boolean, dan list, yang mana semua
tersebut ada pada setiap bahasa pemrograman.

Python dictionaries ini mirip seperti list yang kita buat


diawal tadi, cuman perbedaan terletak pada notasi yang
digunakan. Untuk lebih jelas mari kita praktek langsung.

Notasi pada dictionary menggunakan kurung kurawal buka


({), tanda petik, colon dan kemudian value, untuk setiap
key-value dipisahkan dengan koma (,) dan ditutup dengan
kurung kurawal tutup (}).

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 33
MEMAHAMI Python DICTIONARIES

Menggunakan built-in

Python dictionaries memiliki beberapa built-in yang


mencakup hampir seluruh tipe data.

MEMAHAMI Python DICTIONARIES

Menggunakan get()

get() ini digunakan untuk mendapatkan data dari list data


yang sudah dibuat.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 34
MEMAHAMI Python DICTIONARIES

Menggunakan keys() dan values()

keys() berfungsi untuk menampilkan key dari list data yang


telah dibut, sementara values() digunakan untuk
menampilkan value dari list data.

MEMAHAMI Python DICTIONARIES

Menggunakan pop()

pop() digunakan untuk menghapus key/value dari list data


yang telah dibuat.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 35
MEMAHAMI Python DICTIONARIES

Menggunakan update()

update() ini digunakan untuk menambahkan dictionaries


baru ke dictionaries lama.

MEMAHAMI Python DICTIONARIES

Menggunakan items()

Ketika menggunakan dictionaries, kita akan melihat banyak


items(), jadi sangat wajib untuk memahami items() ini. Kita
lihat banyak cara untuk menampilkan value menggunakan
get() lalu bagaimana cara untuk menampilkan semua key()
dan value() secara bersamaan?

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 36
MEMAHAMI SETS DAN TUPLES Python

Sebenarnya set dan tuple tidak perlu dibahas pada Intro


Python kali ini, namun karena kita ingin mengenal lebih
cepat mengenai keduanya akhirnya kita pelajari juga pada
Intro Python kali ini.

Keliatannya mirip seperti list, namun ada kode set():

Kemudian tuple(), berbeda dengan list, karena tuple() ini


tidak bisa dimodifikasi, artinya apabila kita menggunakan list
maka kita bisa update, menambah, dan modifikasi. Tetapi,
tuple() tidak bisa dimodifikasi.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 37
MENAMBAHKAN LOGIKA KONDISIONAL

Nah, seharusnya kita sudah punya dasar dari beberapa tipe


objek. Hal yang paling menyenangkan dari programming
adalah ketika kita mulai mengaplikasikan logika ke kode kita.

Mari kita mulai dengan contoh.

Walaupun kita belulm mengerti Python sebelum memulai


bagian logic ini, pastinya pada contoh sebelum-sebelumnya
sudah dibekali sedikit pengetahuan mengenai Python. Pada
bagian logic ini, Python dibuat semudah mungkin agar
mudah dibaca seperti layaknya bahasa manusia.

Ada dua hal yang perlu digaris bawahi ketika berbicara


syntax if statement. Pertama, semua if statement berakhiran
dengan tanda titik dua (:). Kedua, kode/script yang
dijalankan/ekseskusi jika kondisinya benar/true merupakan
bagian dari kode yang terindentasi/menjorok, indentasi ini
harus empat spasi, tetapi pada praktiknya tidak terlalu
berpengaruh, yang penting adalah indentasinya konsisten.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 38
MEMAHAMI CONTAINMENT

Containment berarti suatu tindakan pengontrolan, jadi bisa


mengecek beberapa objek yang memiliki sebuah elemen atau
objek spesifik.

Sebagai contoh kita memiliki variabel bernama vendor,


didalam vendor apakah ada data ciscokah atau tidak bisa kita
cek menggunakan containment.

Nah, sekarang kita implementasikan pada script/kode


kondisional. Tentunya lebih banyak praktik lebih cepat kita
dalam memahami suatu bahasa pemrograman, terlebih
Python.

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.

Dari segi pandangan sebagai network engineer yang sedang


mencari cara untuk mengotomasi device jaringan dan
infrastruktur, semuanya hampir bisa menggunakan for loop.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 40
MENGGUNAKAN LOOPS PADA Python

Belajar while loop

While artinya sementara/sedangkan, nah jadi dalam


pemrograman Python ini maksud dari while loop adalah
serangkaian kode yang dijalankan/eksekusi
while/sementara/sedangkan beberapa kondisi bernilai
benar/true. Sebagai contoh, perhitungan variabel dimulai dari
1 kemudian while/sementara kalau kurang dari 5 maka
variabel dicetak/print kemudian ditambah 1.

Untuk pengenalan, ini sudah mencakup semua materi while


loop, kedepan seiring kita menggunakan loop maka nanti
contoh akan lebih dijumpai.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 41
MENGGUNAKAN LOOPS PADA Python

Belajar for loop

For loop inilah yang sering dipakai pada Python untuk


network programming daripada while loop.

Seperti pada biasanya nih, kita belajar dengan beberapa


contoh sederhana.

Yang pertama untuk mencetak setiap objek dalam sebuah list.


Kita bisa melihat contoh bahwasanya syntaxnya sederhana
dan lagi kita akan sering menjumpainya. Statement pertama
atau awalan dari for loop harus diakhiri dengan tanda titik
dua (:) dan kode yang akan dieksekusi harus ditulis dengan
indentasi.

Contoh kode diatas merupakan tipe dari for loop yang sering
dikenal dengan nama for-in atau for-each loop.

Okey, sekarang kita akan menggabungkan beberapa hal yang


telah kita pelajari diawal seperti containment, kondisional
dan loops.

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.

Selanjutnya kita akan membuat script berikutnya yang lebih


menantang, dimana kita akan menggunakan loop pada
sebuah dictionary.

Okey langsung saja kita mulai, untuk script/kode awal seperti


ini ya.

Nah,dictionary bernama COMMANDS sudah dibuat nih,


sekarang kita akan membuat dictionary CONFIG_PARAMS
untuk menentukan command mana yang akan dieksekusi
dan value mana yang akan digunakan pada setiap string
command yang terdefinisi pada COMMANDS.

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

Functions ini berguna sekali untuk mengeliminasi kode yang


kembar/duplicate lebih jelasnya mungkin kita sebagai
network engineer pastilah sering konfig VLAN, nah ini pasti
diketik berulang-ulang pada setiap device, capek udah pasti.
Dengan menggunakan functions ini misal satu konfig VLAN
bisa langsung dikirim ke 10 bahkan 1000 device tergantun
spesifikasi jaringan dan hardware perangkat controller.

Contoh yang pertama kita akan membuat data VLAN sebagai


berikut

Selanjutnya kita buat function dasar print() barulah nanti


kita implementasikan pada VLAN tadi.

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.

Function yang pertama digunakan adalah get_commands(),


digunakan untuk mendapatkan command apa saja yang
dibutuhkan untuk dikirim pada device jaringan. Pada contoh
kali ini ada dua parameter yakni yang pertama VLAN ID,
yang kedua adalah VLAN NAME.

Function kedua adalah push_commands(), push/menekan ya


gampangnya inilah function yang bekerja seperti tangan kita
yaitu memberikan commands pada terminal network devices.

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.

Jadi full scriptnya ketika dijalankan adalah seperti ini ...

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 47
BEKERJA DENGAN FILE

Kita fokus pada bagaimana cara membaca dan menulis data


dari file. Kita belajar dari yang sederhana dimana nantinya
kita dapat dengan mudah mengimplementasikan bab-bab
sebelumnya.

BEKERJA DENGAN FILE

Membaca File

Contoh kali ini kita mempunyai sebuah konfigurasi yang


berada satu direktori pada Python interpreter.

Filenya bernama vlans.cfg, kurang lebih seperti ini.

Dengan hanya dua line script pada Python, kita dapat


membuka dan membaca file, keren kan?

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 48
Contoh diatas membaca semua file sebagai objek str komplit
menggunakan metode read().

Contoh berikutnya kita menggunakan readlines() untuk


membaca file.

Okey, sekarang buka lagi filenya, save isi/konten sebagai


string, kemudian edit sedikit (manipulasi), untuk membuat
VLAN sebagai dictionary sama halnya seperti bagaimana kita
menggunakan objek vlan pada contoh function sebelumnya.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 49
BEKERJA DENGAN FILE

Menulis File

Contoh selanjutnya kita akan praktek bagaimana caranya


menulis data ke file.

Objek vlan yang sebelumnya sudah dibuat kita pakai lagi ya.

Sebelum lanjut, kita tambah dulu beberapa vlan.

Nah, sekarang ada delapan vlan ya pada list. Saatnya menulis


data pada list tersebut ke sebuah file baru, tetapi tetap
menjaga format penulisannya sesuai spacing yang
ditetapkan.

Langkah pertama adalah membuka file baru. Jika tidak ada,


maka secara otomatis akan membuat file baru.

Ketika sudah terbuka, kita bisa menggunakan metode get()


untuk mendapatkan value VLAN yang dibutuhkan dari setiap
dictionary dan menggunakan metode write() untuk

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 50
menuliskannya data tersebut ke dalam file, terakhir filenya
ditutup/closed.

Jadi kesimpulannya, kita membuka file yang bernama


vlans_new.cfg kalau tidak ada maka otomatis akan terbentuk
file baru. Kemudian kita menambahkan list data dari value
vlans yang sebelumnya sudah dibuat. Maka seperti ini output
dari vlans_new.cfg.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 51
MEMBUAT PROGRAM Python

Okey, sekarang kita mencoba belajar bagaimana sih


membuat sebuah program Python. Sebelumnya kita coding
Python menggunakan Python interpreter, kali ini kita akan
langsung coding Python dan menyimpannya dalam
format .py. Oiya kita bisa menggunaka software Pycharm
untuk yang menyukai Python IDE atau bisa manual script
sendiri lalu run script python via terminal.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 52
MEMBUAT PROGRAM Python

Membuat Script Dasar Python

Langkah pertama adalah kita buat file yang memiliki


format .py. Misal kita akan membuat file bernama
suwung.py.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 53
Okey jadi seperti ini scriptnya ...

Sekarang run script suwung.py, begini outputnya ...

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 54
MEMBUAT PROGRAM Python

Memahami Shebang

Shebang? Apaan tuh? Shebang adalah script baris/line


pertama pada pemrograman Python: #!/usr/bin/env python.

Shebang memerintahkan sistem dimana interpreter Python


menggunakannya untuk mengeksekusi program. Kalau tidak
ada shebang sebenarnya script kita masih bisa jalan, namun
apabila sistem diinstall lebih dari satu versi python,
sementara kita menjalankan program dengan
perintah ./namaprogram.py maka akan terjadi missmatch
karena tiap versi Python memiliki perbedaan walaupun tidak
signifikan.

Namun apabila kita menggunakan perintah “python


namaprogram.py” untuk menjalankan script python, maka
shebang tidak diperlukan.

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

Menambahkan IP Loopback pada Router

Step :

1. Pertama ialah konfigurasikan interface eth0 Ubuntu docker


menjadi dhcp. Caranya klik kanan pada icon Ubuntu
kemudian edit config.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 57
2. Konfigurasi detail telnet R1 terlebih dahulu, sebagai
contoh :

R1(config)#enable password cisco


R1(config)#username david password cisco
R1(config)#line vty 0 4
R1(config-line)#login local
R1(config-line)#transport input all

3. Sesuai topologi diatas terdapat NAT, nah interface f0/0 R1


kita buat dhcp saja

R1(config)#int f0/0
R1(config-if)#ip address dhcp
R1(config-if)#no shutdown

4. Masuk ke Ubuntu docker kemudian update terlebih dahulu


dan install paket Python.

root@Ubuntu#apt update
root@Ubuntu#apt install Python

5. Kemudian lanjut ke pembuatan script Python, misal kali ini


kita akan membuat script Pythonq. Simpan menggunakan
kombinasi tombol ctrl+O lalu keluar menggunakan
kombinasi tombol ctrl+x.

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()

6. Langkah berikutnya adalah uji coba nih, pertama aktifkan


debug telnet pada R1, baru kita eksekusi Python pada
Ubuntu docker.

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

Kali ini kita akan membuat vlan pada S1 tentunya


menggunakan otomasi pada controller ubuntu. Pertama yang
pasti setting ip address yang satu network agar dapat saling
terhubung.

1. Buat detail username dan allow line vty pada S1

S1(config)#enable password cisco


S1(config)#username rama password cisco
S1(config)#line vty 0 4
S1(config-line)#login local
S1(config-line)#transport input all

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

2. Sekarang kita konfig controller ubuntu, buat script untuk


membuat vlan otomatis. Sebagai contoh kita buat script
dengan nama vlan.

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()

3. Kemudian kita running script Python vlan tadi pada


controller ubuntu dan jangan lupa debug telnet pada S1
untuk dapat mengetahui log apa yang dilakukan controller
pada S1.

root@gns3-iouvm:/home/gns3# Python vlan


Enter your telnet username: rama
Password:

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

VLAN Name Status Ports

1 default active Et0/1,


Et0/2, Et0/3, Et1/0

Et1/1, Et1/2, Et1/3, Et2/0

Et2/1, Et2/2, Et2/3, Et3/0

Et3/1, Et3/2, Et3/3


20 Python_VLAN_20 active
30 Python_VLAN_30 active
40 Python_VLAN_40 active
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 66
Python LAB 3

Menghapus Password Enable dan Membuat Script


Python Menjadi Executable

Masih menggunakan topologi pada LAB 2, yang


membedakan adalah kita akan membuat script Python
menjadi executable tanpa harus mengetikan Python nama
script, namun menggunakan command ./namascript.py.
Bagaimana caranya? Yuk kita mulai …

1. Copy file vlan menjadi vlan.py


root@gns3-iouvm:/home/gns3# cp vlan vlan.py

Kemudian edit file vlan.py


root@gns3-iouvm:/home/gns3# nano vlan.py

tambahkan pada baris atas


#!/usr/bin/env Python

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 67
2. Rubah level file menjadi administrator

root@gns3-iouvm:/home/gns3# chmod +x vlan.py

Untuk menghapus password enable pada saat kita telnet/ssh


ke device adalah sebagai berikut …

1. Kita ubah privilege user pada S1 menjadi 15

S1#show run | i user


username rama password 0 cisco

S1(config)#user rama privilege 15

2. Ubah script vlan.py, hapus line tn.write enable dan tn.write


cisco, detail sebagai berikut …

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.

*Note: pada LAB 4 kita akan membuat 20 vlan dengan loop,


jadi tidak perlu mengetikkan satu per satu.

Nah, saatnya uji coba …

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

Membuat Vlan pada Switch menggunakan Loops

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.

Fungsi for n in range (2,101): akan membuat data dengan


range 2 – 100.

Untuk topologi masih sama dengan lab 3 sebelumnya.


1. Buat script sebagai contoh namanya script vlan.py

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")

for n in range (2,101):


tn.write("vlan " + str(n) + "\n")
tn.write("name Python_VLAN_" + str(n) + "\n")

tn.write("end\n")
tn.write("exit\n")

print tn.read_all()

2. Rubah level file menjadi administrator

root@hanker-Inspiron-3443:/home/hanker# chmod
+x vlan.py

3. Sekarang run script Python 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

Multi Switch Multi Vlan

Pernah membayangkan memanage lebih dari switch? Kali ini


kita akan mencoba mengimplementasikan membuat multi
vlan pada multi switch.

1. Buat topologi seperti gambar diatas

2. Buat detail username dan allow line vty pada S1-S4

S1(config)#enable password cisco


S1(config)#username rama password cisco
S1(config)#line vty 0 4
S1(config-line)#login local
S1(config-line)#transport input all

S1(config)#user rama privilege 15

2. Nyalakan debug telnet pada semua switch agar script


Python yang bekerja bisa kita ketahui.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 74
S4#debug telnet
Incoming Telnet debugging is on

3. Buat script multivlan.py pada controller ubuntu.

root@hanker-Inspiron-3443:/home/hanker# nano multivlan.py


root@hanker-Inspiron-3443:/home/hanker# chmod +x
multivlan.py

#!/usr/bin/env Python
import getpass
import sys
import telnetlib

user = raw_input("Enter your telnet username: ")


password = getpass.getpass()

for n in range (2,6):


print "Telnet to host" + str(n)
HOST = "10.200.200." + str(n)
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")

for n in range (2,21):


tn.write("vlan " + str(n) + "\n")
tn.write("name Python_VLAN_" + str(n) + "\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

Menyimpan konfigurasi Switch

Untuk menyimpan konfigurasi switch tinggal tambahkan


script tn.write("wr\n"), sebagai contoh

#!/usr/bin/env Python

import getpass
import sys
import telnetlib

user = raw_input("Enter your telnet username: ")


password = getpass.getpass()

for n in range (2,6):


print "Telnet to host" + str(n)
HOST = "10.200.200." + str(n)
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")

for n in range (2,21):


tn.write("vlan " + str(n) + "\n")
tn.write("name Python_VLAN_" + str(n) + "\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

Multi Switch Multi Vlan menggunakan data ip pada file

Masih menggunakan topologi lab 5, bedanya adalah pada lab


5 data ip yang digunakan untuk melakukan otomasi
menggunakan script HOST dalam range sementara lab 7 ini
data ip disimpan dalam file terpisah.

1. Buat file myswitches (bebas namanya)

root@hanker-Inspiron-3443:/home/hanker# nano
myswitches

10.200.200.2
10.200.200.3
10.200.200.4
10.200.200.5

Sebelum masuk ke script utama kita uji coba dulu. Buat


script testloop.py

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

2. Buat script vlanopenfile.py

root@hanker-Inspiron-3443:/home/hanker# nano
vlanopenfile.py

#!/usr/bin/env Python

import getpass
import sys
import telnetlib

user = raw_input("Enter your username: ")


password = getpass.getpass()

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")

for n in range (2,16):


tn.write("vlan " + str(n) + "\n")
tn.write("name Python_VLAN_" + str(n) + "\n")

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 80
tn.write("end\n")
tn.write("exit\n")

print tn.read_all()

3. Jalankan script vlanopenfile.py

root@hanker-Inspiron-3443:/home/hanker# Python
vlanopenfile.py

Apabila berhasil, maka outputnya hampir sama seperti lab 5.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 81
Python LAB 8

Backup Konfigurasi Switch

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.

1. Buat script backupvlan.py

root@hanker-Inspiron-3443:/home/hanker# nano backupvlan.py

#!/usr/bin/env Python

import getpass
#import sys
import telnetlib

# Get Username and Password


user = raw_input("Enter your username: ")
password = getpass.getpass()

# Open file with list of switches


f = open ("myswitches")

# Telnet to each switch and cofigure it


for line in f:
print "Getting running-config " + (line)
HOST = line.strip()
tn = telnetlib.Telnet(HOST)

tn.read_until("Username: ")
tn.write(user + "\n")
if password:
tn.read_until("Password: ")
tn.write(password + "\n")

tn.write("terminal length 0\n")


tn.write("show run\n")
tn.write("exit\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

2. Jalankan script backupvlan.py

3. Pastikan output backup sudah tersimpan

4. Coba lihat isi file output backup.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 83
Python LAB 9

Jupyter IDE

Jupyter merupakan sebuah aplikasi web yang sifat


open-source yang mengijinkan kita untuk membuat dan
membagikan dokumen yang berisi live kode, persamaan,
visualilasi dan teks.

Untuk dapat menggunakan Jupyter pada GNS3 langkah


pertama adalah mengunduh Jupyter 2.7 Appliance.

1. Download appliance file Jupyter

2. Import appliance Jupyter tadi di GNS3

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.

Pastikan Jupyter berjalan dengan baik dan bisa dibuka via


web browser. Selanjutnya kita akan membuat topologi seperti
ini. Kita akan Menambahkan IP Loopback pada Router, sama

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.

1. Jalankan semua device, kemudian klik kanan pada Jupyter


pilih console, atau bisa klik dua kali pada icon jupyter.

2. Kemudian muncul tampilan gui jupyter di browser.

3. Buat Python 2 Notebook baru.

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.

4. Pastikan Jupyter sudah bisa terhubung dengan cisco


Router, coba cek dengan cara ping ip Jupyter dari device
router.

5. Jangan lupa untuk memberikan konfigurasi telnet pada


cisco router

R1(config)#enable password cisco


R1(config)#username rama password cisco
R1(config)#line vty 0 4
R1(config-line)#login local
R1(config-line)#transport input all
R1(config)#username rama privilege 15

6. Pada workspace Jupyter tadi tambahkan script berikut.

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

Paramiko adalah implementasi protokol SSHv2 dari Python


yang menyediakan fungsi client dan server. Paramiko sendiri
pure tampilannya Python dengan menggunakan konsep
jaringan SSH.

Untuk paramiko lab ini kita akan mencoba push config


loopback, vlan, dan ospf.

1. Langkah pertama install paket paramiko pada Python


controller Ubuntu terlebih dahulu.

root@hanker-Inspiron-3443:/home/hanker# sudo /usr/local/bin/pip2.7


install paramiko

2. Jangan lupa konfigurasi ssh, user credential, ip address


pada S1 sebelum berlanjut ke scripting Python.

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)

print "Successful connection", ip_address

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")

for n in range (2,21):


print "Creating VLAN " + str(n)
remote_connection.send("vlan " + str(n) + "\n")
remote_connection.send("name Python_VLAN " + str(n) + "\n")
time.sleep(0.5)

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

Mantap, script berhasil running dengan baik.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 92
Python LAB 11

Netmiko 1

Netmiko merupakan library open source yang digunakan


untuk menyederhanakan management SSH device jaringan
yang jaraknya skala WAN. Device yang bisa digunakan
diantaranya Cisco, Arista, dan Juniper.

Lab pertama Netmiko kali ini menggunakan topologi yang


sama dengan lab paramiko sebelumnya. Pada kali ini kita
akan push config “show ip int br”, add ip add loopback 0, dan
create vlan.

1. Seperti biasa install paket yang dibutuhkan, karena kali ini


kita bermain dengan netmiko maka install paket netmiko
pada Python Ubuntu controller.

root@hanker-Inspiron-3443:/home/hanker# sudo
/usr/local/bin/pip2.7 install netmiko

2. Jangan lupa konfigurasi ssh, user credential, ip address


pada S1 sebelum berlanjut ke scripting Python.

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

3. Buat script netmiko dengan nama netmiko1.py

#!/usr/bin/env Python

from netmiko import ConnectHandler

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

config_commands = ['int loop 0', 'ip address 12.12.12.12


255.255.255.0']
output = net_connect.send_config_set(config_commands)
print output

for n in range (2,11):


print "Creating VLAN " + str(n)
config_commands = ['vlan ' + str(n), 'name Python_VLAN ' + str(n)]
output = net_connect.send_config_set(config_commands)
print output

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 94
4. Sekarang running script netmiko1.py

Joss, berhasil seperti biasanya ya, hehehhe. Terlihat pada


output pertama adalah command “Show ip int brief”,
kemudian ada hasil output config Vlan.

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.

1. Jangan lupa konfigurasi ssh, user credential, ip address


pada S1-S2 sebelum berlanjut ke scripting Python.

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

from netmiko import ConnectHandler

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',
}

all_devices = [iosv_l3_s1, iosv_l3_s2, iosv_l3_s3]

for devices in all_devices:


net_connect = ConnectHandler(**devices)
for n in range (2,11):
print "Creating VLAN " + str(n)
config_commands = ['vlan ' + str(n), 'name Python_VLAN ' + str(n)]
output = net_connect.send_config_set(config_commands)
print output

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

Lab ketiga netmiko kita akan menggunakan lima switch layer


3 yang masing-masing memiliki access mode ke pc melalui
ethernet0/3 dan trunk mode untuk saling terhubung antara
S1-S4 melalui ethernet 0/0 dan 0/1. Untuk management
interface yang digunakan masing-masing switch adalah
interface e0/2.

Step-step :

1. Buatlah user credential ssh untuk masing-masing switch.


Dan jangan lupa beri ip address sesuai gambar topologi.

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”.

3. Kemudian buat script python netmiko.

#! /usr/bin/env python

from netmiko import ConnectHandler

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

all_devices = [ios_s1, ios_s2, ios_s3, ios_s4]

for devices in all_devices:


net_connect = ConnectHandler(**devices)
output = net_connect.send_config_set(lines)
print output

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

Lab Netmiko 4 akan membahas mengenai Core switch dan


access switch. Untuk dua link yang terhubung antara S1 dan
S2 kita hanya menggunakan default stp untuk link cadangan.
Script python akan push konfigurasi access mode dan vlan
pada access switch. Pada lab netmiko 5 kita akan push
konfigurasi untuk core switch dan access switch.

1. Untuk lab netmiko 4 konfigurasi manual trunk yang


dikonfig adalah pada interface e0/0 pada S3-S5. Sisanya nanti
akan kita push konfig pada lab netmiko 5.

2. Kemudian seperti biasa kita konfigurasi user credential


untuk semua switch.

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

2. Kita buat script netmiko yang berisi push config access


mode int e0/2, trunk int e0/1 dan access vlan masing-masing
vlan pada access switch.

NETWORK PROGRAMMING & AUTOMATION Chapter 1 – Dept Network UKM PCC 2018 105
Simpan sebagai netmiko4.py

3. Berikutnya kita buat script config tiap-tiap switch.

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.

Mari kita verifikasi pada tiap-tiap switch.

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

Push konfigurasi core switch dan access switch, adanya


penambahan vlan 10 pada tiap-tiap access switch kemudian
kita akan menambahkan konfigurasi trunk native vlan 12
pada eth1/1 pada S1 dan S2.

1. Seperti biasa kita konfigurasi user credential untuk semua


switch.

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.

Yang pertama ini “core_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

Anda mungkin juga menyukai