Network Automation With Python
Jonggol It Bootcamp 2019
Midzan Yunus Aldhian
[email protected]Python Introduction
Python Founder
Python diciptakan oleh Guido van Rossum pertama kali
di Centrum Wiskunde & Informatica (CWI) di Belanda
pada awal tahun 1990-an.
Guido van Rossum menciptakan python dari sebuah
bahasa scripting yang pernah dia bantu rancang
sebelumnya, ABC.
Nama python sendiri tidak berasal dari nama ular yang
kita kenal. Guido adalah penggemar grup komedi Inggris
bernama Monty Python. Ia kemudian menamai bahasa
ciptaannya dengan nama Python
Fitur Python Terdaftar
• sederhana: sintaks menggunakan Bahasa yg mudah dipahami dengan Bahasa
inggris dan Bahasa yang cukup sering di pakai dan populer
• Open Source : Bahasa yang kuat dan gratis bagi semua orang untuk
menggunakan dan mengubah sesuai kebutuhan.
• Being Embeddable & Extensible: Python dapat memiliki cuplikan bahasa lain di
dalamnya untuk melakukan fungsi tertentu.
• interpreted : Kekhawatiran tugas memori besar dan tugas CPU berat lainnya
diatasi oleh Python sendiri membuat Anda hanya khawatir tentang pengkodean.
Portable : dapat digunakan di berbagai platfrom hardware ,os,dan database
Opportunity of Learn Python :
• Data Scientist
• Machine Learning
• Internet of Things
• Web Development
• Data Visualization
• Automation
Python Basic
Variable = 5 #Variabel dalam tempat penyimpanan sederhana untuk
menyimpan value data
variable = "John"
#Sebuah set atau beberapa data yang berada di dalam SQUENCE DATA
sebuah variabel
buah-buahan = “apel”, ”pisang”, ”anggur”
Element
cars = "Ford", "Volvo", "BMW" #Setiap elemen adalah urutan dari posisi atau indeks sequence data
cars[0] = "Toyota“
## RULE variabel Python:
variabel harus dimulai dengan huruf atau karakter (_)
variabel tidak dapat dimulai dengan angka
variabel hanya dapat berisi karakter (A-z, 0-9, dan _)
variabel peka huruf besar-kecil (usia, Usia dan AGE adalah tiga
variabel berbeda)
Numeric Data
Ada tiga jenis numerik dalam Python:
•int
•float
•complex
#Int
x=1 # int, atau integer, adalah bilangan bulat, positif atau negatif, tanpa desimal, dengan panjang tak terbatas.
# float
y = 2.8 # Float, adalah angka, positif atau negatif, yang mengandung satu atau lebih desimal.
# Complex
z = 1j #Compleks, ditulis dengan "j" sebagai bagian imajiner
Type Conversion
kita dapat mengonversi dari satu jenis data ke jenis lainnya dengan int(), float(), and complex() methods:
x = 1 # int
y = 2.8 # float
z = 1j # complex
#convert from int to float:
a = float(x)
#convert from float to int:
b = int(y)
#convert from int to complex:
c = complex(x)
List Data
List adalah beberapa data yang berada dalam variabel
yang sama.sekaligus dengan jenis data yang berbeda
List dapat dihapus, artinya Anda dapat mengubah data
yang tersedia di dalamnya
Daftar didefinisikan menggunakan metode a = list () atau
menggunakan a = [] di mana ‘a’ adalah nama daftar
thislist = ["apple", "banana", "cherry"]
print(thislist)
Tuple Data
Tuple dalam Python sama dengan list.
immutable , Itu berarti bahwa setelah Anda
mendeklarasikan tuple, Anda tidak dapat menambah,
menghapus, atau memperbarui tuple.
Tuple dalam Python ditulis a = () atau a = tuple () di mana
‘a’ adalah nama tuple
thistuple = ("apple", "banana", "cherry")
print(thistuple)
String Data
String adalah parameter yang berisi data kata atau huruf
String ditulis dalam tanda kutip tunggal (‘’) tunggal ("").
print("Hello")
print('Hello')
Dictionary
Dictionary merupakan salah satu type data pada python
yang berisi pasangan key dan value.
#Dictionary type
dict = {"name" : "John",
"age" :36
}
Untuk mengakses data pada dictionary, kita tidak
menggukana indexing seperti list, namun kita bisa
menggunakan key.
x = dict[“name”]
Set Data
set adalah koleksi yang tidak diurut dan tidak diindeks.
Dalam set, data ditulis dengan sebuah operasi set
a = {1,2,3,4,4,4} #Result
b = {3,4,5,6}
print(a,b)
{1,2,3,4} {3,4,5,6}
print(a & b)
{3,4}
print(a-b)
{1,2}
print(a^b)
{1,2,5,6}
Operations in Sets Data Types
Operators in python
Operator digunakan untuk melakukan operasi pada variabel
dan nilai.
Python membagi operator dalam kelompok-kelompok •Arithmetic operators
berikut:
•Assignment operators
•Comparison operators
•Logical operators
•Identity operators
•Membership operators
•Bitwise operators
Python Arithmetic Operators
Python Assignment Operators
Python Comparison Operators
Python Logical Operators
Python Identity Operators
Python Membership Operators
Python Bitwise Operators
Python If ... Elif…Else
If, elif, dan else akan mempengaruhi jalannya suatu program, jika paramter pada if bernilai benar,
maka blok code dibawah if akan dieksekusi.
Jika parameter pada if bernilai salah dan elif bernilai benar, maka blok code dibawah elif akan dieksekusi.
Dan jika ternyata parameter pada if dan elif bernilai salah, maka blok code pada else akan dieksekusi
>>> x = 5
>>>
>>> if x < 10:
... print "x kurang dari 10"
... elif x == 10:
... print "x adalah 10"
... else:
... print "x lebih dari 10“
...
x kurang dari 10
Break & Continue
Jika suatu program mencapai break, maka program tersebut akan berhenti melakukan
perulangan.
Dan jika suatu program mencapai continue, maka program akan skip dan melakukan
perulangan pada nilai selanjutnya
>>> for x in range(10):
>>> for x in range(10): ... if x == 4:
... if x == 4: ... continue
... break ... print x
... print x ...
... 0
0 1
1 2
2 3
3 …
9 >>>
Python Looping
Looping digunakan untuk melakukan suatu pekerjaan
dengan perulangan.
Loop di Python atau bahasa lain mimiliki 2 jenis TEST :
• Pre-Test Loops: test kondisi kemudian >>> eksekusi
statement
• Post Test Loops: eksekusi statement kemudian >>>
membaca kondisi
Loop Commands:
•for loops
fruits = ["apple", "banana", "cherry"]
for x in fruits:
print(x)
•while loops
i = 1
while i < 6:
print(i)
i += 1
Python Functions
Fungsi biasanya digunakan untuk menghemat suatu kode, daripada menulis kode yang sama beberapa kali,
kita bisa membuat sebuah fungsi, dimana fungsi itu akan kita panggil pada beberapa bagian di aplikasi yang
kita buat.
def my_function(): #Dalam Python fungsi didefinisikan menggunakan kata
print("Hello from a function") kunci def
def my_function():
print("Hello from a function") #Untuk memanggil suatu fungsi, gunakan nama fungsi yang
diikuti oleh tanda kurung
my_function()
def my_function(fname): #Parameter hanya dapat diteruskan ke fungsi sebagai
print(fname + " Refsnes") argumen.
my_function("Emil")
my_function("Tobias")
my_function("Linus")
Python Arrays
Array digunakan untuk menyimpan beberapa value dalam satu variabel tunggal:
Contoh menyimpan mobil dalam variabel tunggal dapat terlihat seperti ini:
car1 = "Ford"
car2 = "Volvo"
car3 = "BMW“
Namun, bagaimana jika Anda tidak memiliki 3 mobil, tetapi 300?
Array dapat menyimpan banyak nilai dengan satu nama, dan Anda dapat mengakses nilai dengan merujuk ke
posisi atau nomor indeks.
Contoh
cars = ["Ford", "Volvo", "BMW"]
Array Methods
SSH and Configuration script
Cisco
import paramiko
import time
ip_address = '192.168.1.3'
username = 'cisco'
password = 'cisco'
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_key_host_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip_address,username=username,password=password)
print("success login to {}".format(ip_address))
conn = ssh_client.invoke_shell()
conn.send("conf t\n")
conn.send("int lo0\n")
conn.send("ip add 10.1.1.1 255.255.255.255 \n)
time sleep(1)
output = conn.recv(65535)
print(output.decode())
ssh_client.cloce
SSH and Configuration script
Mikrotik
import paramiko
import time
ip_address = '192.168.1.2'
username = 'admin'
password = ''
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip_address,username=username,password=passwors)
print("success login to {}".format(ip_address))
ssh_client.exec_command("interface bridge add name=loopback0\n")
ssh_client.exec_command("ip address add address 10.2.2.1/32 interface=loopback0\n")
ssh_client.close
SSH and Configuration script
Dual vendor
import paramiko
import time
device = [
{
'ip_address' = '192.168.1.3',
'vendor : cisco'
'username' = 'cisco',
'password' = 'cisco'
}
{
'ip_address' = '192.168.1.2',
'vendor : mikrotik'
'username' = 'admin',
'password' = ''
}
]
ssh_client = paramiko.SSHClient()
sh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy))
for device in devices:
ssh.client.connect(hostname=device['ip_address'],username=device['username'],password=device['passw
ord'])
if device['vendor'] == 'cisco':
conn = ssh_client.invoke.shell()
conn.send("conf t\n")
conn.send("int lo0\n")
conn.send("ip add 10.1.1.1.3 255.255.255.255\n")
(time.sleep1)
output = conn.recv(65535)
print(output.decode())
else:
ssh_client.exec_command('interface bridge add name=loopback0\n')
ssh_client.exec_command('ip address add address 10.2.2.1/32 interface=loopback0\n')
ssh_client.close