INTRODUCTION TO PYTHON
BY KHAWAR BUTT [CCIE X 7#12353 & CCDE#20110020]
[R/S, SECURITY, SP, VOICE, STORAGE NETWORKING, DATA
CENTER, WIRELESS]
INTRODUCTION TO PYTHON
• PYTHON INTERPRETER
• PYTHON INTEGRATED DEVELOPMENT ENVIRONMENT (IDE)
• INTERACTIVE PYTHON
• VARIABLES & OPERATORS
• CONDITIONAL STATEMENTS
• WHILE LOOPS
• FOR LOOPS
• NETWORK FUNCTIONS
PYTHON INTERPRETER
• ALLOWS YOU TO ISSUE PYTHON COMMANDS INTERACTIVELY
• YOU CAN DOWNLOAD IT FROM HTTPS://WWW.PYTHON.ORG/DOWNLOADS
• NORMAL INSTALLATION PROCEDURE
• INVOKE THE PYTHON APP OR USE IDLE
PYTHON IDE
PROVIDES A FULL-BLOWN ENVIRONMENT FOR DEVELOPMENT
FEATURES INCLUDE:
SYNTAX HIGHLIGHTING
CODE EDITOR WITH AUTOMATIC CODE FORMATTING
DEBUGGING CAPABILITIES
TERMINAL FOR INTERACTIVE PYTHON COMMAND EXECUTION
SAVING AND LOADING OF PYTHON SCRIPTS / APPLICATION
BUILT-IN LIBRARIES
POPULAR IDE’S INCLUDE PYCHARM, VISUAL STUDIO, SPYDER, PYDEV ETC.
INTERACTIVE PYTHON – BASIC MATH
ADDITION
2 + 5
OUTPUT=7
SUBTRACTION
99 – 55
OUTPUT=44
MULTIPLICATION
109 * 55
OUTPUT=5995
INTERACTIVE PYTHON – BASIC MATH
DIVISION - FLOAT
24 / 6
OUTPUT=4.0
24 / 5
OUTPUT=4.8
DIVISION - INTEGER
24 // 6
OUTPUT=4
24 // 5
OUTPUT=4
INTERACTIVE PYTHON – BASIC MATH
COMBINING OPERATIONS
10 - 9 + 7
OUTPUT=8
9 + 7 * 10
OUTPUT=79
(9 + 7) * 10
OUTPUT=160
INTERACTIVE PYTHON – STRINGS
USING SINGLE OR DOUBLE QUOTES
'KBITS’
OUTPUT=‘KBITS’
"KBITS“
OUTPUT=‘KBITS’
INTERACTIVE PYTHON – STRINGS
USING BUILT-IN PRINT FUNCTION – SIMPLE
PRINT ('KBITS’)
OUTPUT=KBITS
PRINT ("KHAWAR'S CLASSES")
OUTPUT=KHAWAR’S CLASSES
INTERACTIVE PYTHON – STRINGS
USING BUILT-IN PRINT FUNCTION – SPECIAL CHARACTERS
SPECIAL CHARACTER – “\”
PRINT ('KHAWAR\'S "CLASSES“’)
OUTPUT=KHAWAR’S “CLASSES”
INTERACTIVE PYTHON – STRINGS
USING BUILT-IN PRINT FUNCTION – SPECIAL CHARACTERS
SPECIAL CHARACTER – “\N”
PRINT ("KHAWAR’S CURRENT CLASSES\NSECURITY \NEI \NPYTHON”)
OUTPUT=KHAWAR’S CURRENT CLASSES
SECURITY
EI
PYTHON
INTERACTIVE PYTHON – STRINGS
USING BUILT-IN PRINT FUNCTION – ADDITIONAL FUNCTIONALITIES
USING THE RAW OPTION ("R")
PRINT (R'KBITS.LIVE\NEWCLASSES’)
OUTPUT=KBITS.LIVE\NEWCLASSES
MULTIPLYING STRINGS
PRINT (5 * 'KBITS ')
OUTPUT=KBITS KBITS KBITS KBITS KBITS
INTERACTIVE PYTHON – VARIABLES
ALLOWS US TO USE A CONTAINER TO HOLD VALUES THAT CAN BE REUSED
THE CONTAINER IS ASSIGNED A MEMORY LOCATION BY THE INTERPRETER
VARIABLES CAN BE OF DIFFERENT TYPES:
INTEGERS
FLOAT (DECIMALS)
STRINGS
THE TYPE IS AUTO-DETECTED AT THE TIME YOU INITIALIZE THE VARIABLE
INTERACTIVE PYTHON – VARIABLES
INTEGER VARIABLE
DEFINING/INITIALIZING AN INTEGER VARIABLE – SIMPLE
X=2
Y=5
DEFINING/INITIALIZING AN INTEGER VARIABLE – USING AN OPERATION
Z=2 + X * Y
INTERACTIVE PYTHON – VARIABLES
INTEGER VARIABLE
DISPLAYING THE INTEGER VARIABLE VALUE
PRINT (X)
OUTPUT=2
PRINT (Y)
OUTPUT=5
PRINT (Z)
OUTPUT=12
INTERACTIVE PYTHON – VARIABLES
FLOAT (DECIMAL) VARIABLE
DEFINING/INITIALIZING A FLOAT VARIABLE – SIMPLE
A=1.5
B=10.0
DEFINING/INITIALIZING A FLOAT VARIABLE – USING AN OPERATION
C=2 * A + B
INTERACTIVE PYTHON – VARIABLES
FLOAT (DECIMAL) VARIABLE
DISPLAYING THE FLOAT VARIABLE VALUE
PRINT (A)
OUTPUT=1.5
PRINT (B)
OUTPUT=10.0
PRINT (C)
OUTPUT=13.0
INTERACTIVE PYTHON – VARIABLES
STRING VARIABLE
DEFINING/INITIALIZING A STRING VARIABLE – SIMPLE
C_NAME='KBITS’
DEFINING/INITIALIZING A FLOAT VARIABLE – USING AN OPERATION
WEBSITE=C_NAME + '.LIVE'
INTERACTIVE PYTHON – VARIABLES
STRING VARIABLE
DISPLAYING THE STRING VARIABLE VALUE
PRINT (C_NAME)
OUTPUT=KBITS
PRINT (WEBSITE)
OUTPUT=KBITS.LIVE
INTERACTIVE PYTHON – VARIABLES
STRING VARIABLE
RETRIEVING CHARACTERS FROM A STRING
PRINT (WEBSITE[0]) – RETRIEVES THE 1 ST CHARACTER
OUTPUT=K
PRINT (WEBSITE[5]) – RETRIEVES THE 6 TH CHARACTER
OUTPUT=.
PRINT (WEBSITE[0:5]) – RETRIEVES STARTING FROM THE 1 ST TO 5TH CHARACTER
OUTPUT=KBITS
INTERACTIVE PYTHON – VARIABLES
STRING VARIABLE
RETRIEVING CHARACTERS FROM A STRING
PRINT (WEBSITE[6:]) – RETRIEVES STARTING FROM THE 6 TH CHARACTER TO END
OUTPUT=LIVE
PRINT (WEBSITE[:5]) – RETRIEVES ALL CHARACTERS TILL THE 6 TH CHARACTER
OUTPUT=KBITS
PRINT (WEBSITE[:5] + ' ' + WEBSITE[6:])
OUTPUT=KBITS LIVE
INTERACTIVE PYTHON – OPERATORS
COMPARISON OPERATORS
“ > “ – GREATER THAN OPERATOR
RETURNS A TRUE OR FALSE ON AN OPERATION
X=5
Y=10
X > Y
OUTPUT=FALSE
INTERACTIVE PYTHON – OPERATORS
COMPARISON OPERATORS
“ < “ – LESS THAN OPERATOR
RETURNS A TRUE OR FALSE ON AN OPERATION
X=5
Y=10
X < Y
OUTPUT=TRUE
INTERACTIVE PYTHON – OPERATORS
COMPARISON OPERATORS
“ >= “ – GREATER THAN OR EQUAL TO OPERATOR
RETURNS A TRUE OR FALSE ON AN OPERATION
X=5
Y=5
X > Y
OUTPUT=FALSE
X >= Y
OUTPUT=TRUE
INTERACTIVE PYTHON – OPERATORS
COMPARISON OPERATORS
“ <= “ – LESS THAN OR EQUAL TO OPERATOR
RETURNS A TRUE OR FALSE ON AN OPERATION
X=5
Y=5
X < Y
OUTPUT=FALSE
X <= Y
OUTPUT=TRUE
INTERACTIVE PYTHON – OPERATORS
COMPARISON OPERATORS
“ == “ – CHECKS TO SEE IF THE 2 VALUES ARE EQUAL
RETURNS A TRUE OR FALSE ON AN OPERATION
X=5
Y=5
X == Y
OUTPUT=TRUE
INTERACTIVE PYTHON – OPERATORS
COMPARISON OPERATORS
“ != “ – CHECKS TO SEE IF THE 2 VALUES ARE NOT-EQUAL
RETURNS A TRUE OR FALSE ON AN OPERATION
X=5
Y=6
X != Y
OUTPUT=TRUE
INTERACTIVE PYTHON – OPERATORS
LOGICAL OPERATORS
“ AND “ – BOTH CONDITIONS NEED TO BE TRUE TO GET TRUE RESULT
RETURNS A TRUE OR FALSE ON AN OPERATION
X=5
Y=10
X < 20 AND Y > 2
OUTPUT=TRUE
INTERACTIVE PYTHON – OPERATORS
LOGICAL OPERATORS
“ OR “ – EITHER ONE CONDITIONS NEEDS TO BE TRUE TO GET TRUE RESULT
RETURNS A TRUE OR FALSE ON AN OPERATION
X=5
Y=10
X < 20 AND Y > 20
OUTPUT=FALSE
X < 20 OR Y > 20
OUTPUT=TRUE
CONDITIONAL STATEMENTS
CONDITIONAL STATEMENTS ALLOWS A PYTHON SCRIPT TO EXECUTE COMMAND BASED
ON A CONDITION BEING TRUE OR FALSE
ALL THE STATEMENTS THAT NEED TO BE EXECUTED NEED TO BE INDENTED PROPERLY
YOU COULD ALSO USE THE “ELSE” STATEMENT TO SPECIFY THE COMMANDS TO BE
EXECUTED IN CASE THE CONDITIONAL IS FALSE.
YOU COULD ALSO USE THE “ELIF” STATEMENT TO HAVE THE SCRIPT CHECK
SUBSEQUENT CONDITIONS IF THE PREVIOUS CONDITION IS FALSE.
IF STATEMENT
EXAMPLE # 1 – CHECKING FOR ODD AND EVEN
X=4
Y=X % 2
IF Y == 0:
PRINT('X IS AN EVEN NUMBER ')
IF Y != 0:
PRINT('Y IS AN ODD NUMBER')
PRINT (‘\NTHANKS FOR USING THE PROGRAM’)
OUTPUT=X IS AN EVEN NUMBER
THANKS FOR USING THE PROGRAM
ELSE STATEMENT
EXAMPLE # 2 – CHECKING FOR ODD AND EVEN
X=5
Y=X % 2
IF Y == 0:
PRINT('X IS AN EVEN NUMBER ')
ELSE:
PRINT('X IS AN ODD NUMBER ')
PRINT ('THANKS FOR USING THE PROGRAM’)
OUTPUT=X IS AN ODD NUMBER
THANKS FOR USING THE PROGRAM
ELIF STATEMENT
EXAMPLE # 3 – PRINTING NUMBER NAMES
X=3
IF X == 0:
PRINT(‘NUMBER IS ZERO‘)
ELIF X == 1:
PRINT(‘NUMBER IS ONE‘)
ELIF X == 2:
PRINT('NUMBER IS TWO’)
ELIF X == 3:
PRINT('NUMBER IS THREE')
ELIF X == 4:
PRINT('NUMBER IS FOUR’)
ELSE:
PRINT(‘THE NUMBER IS GREATER THAN 4’)
PRINT (‘THANKS FOR USING THE PROGRAM’)
OUTPUT= NUMBER IS THREE
THANKS FOR USING THE PROGRAM
LOOPS
LOOPS ALL YOU THE ABILITY TO EXECUTE A SET OF STATEMENTS AS LONG AS A
CONDITION IS TRUE
LOOPS ALSO ALLOW YOU THE ABILITY TO NEST LOOPS
WHILE LOOP
EXAMPLE # 2
EXAMPLE # 1
COUNTO = 1
COUNTI = 50
COUNTER = 1 WHILE COUNTO <= 3:
WHILE COUNTER <= 3: PRINT(COUNTO, END='')
PRINT(COUNTER,END='') PRINT(' ( ',END='')
PRINT(' ',END='') WHILE COUNTI >0:
PRINT(COUNTI, END='')
COUNTER += 1
PRINT(' ', END='')
COUNTI -=10
PRINT (')')
OUTPUT= COUNTO += 1
1 2 3 COUNTI = 50
OUTPUT=
1 ( 50 40 30 20 10 )
2 ( 50 40 30 20 10 )
3 ( 50 40 30 20 10 )
FOR LOOPS
EXAMPLE # 1 EXAMPLE # 2
NAME = 'KHAWAR' PROTOCOLS = ["EIGRP", "IGRP", "OSPF", "IS-IS", "RIP"]
ADMIN_DISTANCE = ['90', '100', '110','115','120']
FOR X IN NAME: COUNT=0
PRINT(X) FOR X IN PROTOCOLS:
PRINT('ADMIN DISTANCE FOR ' + X + ' \TIS\T’ + ADMIN_DISTANCE[COUNT])
OUTPUT= COUNT +=1
K
H OUTPUT=
A ADMIN DISTANCE FOR EIGRP IS 90
W ADMIN DISTANCE FOR IGRP IS 100
A ADMIN DISTANCE FOR OSPF IS 110
R ADMIN DISTANCE FOR IS-IS IS 115
ADMIN DISTANCE FOR RIP IS 120
NETWORK FUNCTIONS
INPUT FUNCTION
INTERFACE = INPUT('WHAT INTERFACE WOULD YOU LIKE TO CONFIGURE : ‘)
PROMPTS FOR INPUT STORE THE VALUE IN A STRING VARIABLE CALLED INTERFACE
TELNET FUNCTION
FROM TELNETLIB IMPORT TELNET
ABC = TELNET('172.25.1.1’)
ABC IS A VARIABLE. IT WILL REFERENCE THE TELNET CONNECTION
GETPASS FUNCTION
IMPORT GETPASS
PASS = GETPASS.GETPASS()
GETPASS WILL PROMPT THE USER FOR PASSWORD AND STORE THE INPUT IN THE PASS VARIABLE
NETWORK FUNCTIONS
CONNECTHANDLER FUNCTION
FROM NETMIKO IMPORT CONNECTHANDLER
ABC = {
'DEVICE_TYPE': 'CISCO_IOS',
'HOST': '172.25.1.1',
'USERNAME': 'KHAWAR',
'PASSWORD': 'CISCO',
'PORT' : 22, # OPTIONAL, DEFAULTS TO 22
'SECRET': 'CISCO', # OPTIONAL, DEFAULTS TO ‘’
}
MYSSH = CONNECTHANDLER(**ABC)
MYSSH IS A VARIABLE. IT WILL REFERENCE THE SSH CONNECTION. CONNECTHANDLER REFERENCE THE PARAMETERS IN THE ABC
VARIABLE.
NETWORK FUNCTIONS
CONFIGURING A ROUTER USING A SINGLE COMMAND
HOSTNAME = MYSSH.SEND_COMMAND('SHOW RUN | I HOST’)
SENDS THE COMMAND TO THE ROUTER OVER THE SSH CONNECTION
NETWORK FUNCTIONS
CONFIGURING A ROUTER THRU SSH USING VARIABLE
CONFIG_COMMANDS = [ 'BANNER MOTD #AUTHORIZED KBITS.LIVE USERS ONLY#',
'LINE CON 0',
' LOGG SYNC'
]
MYSSH.SEND_CONFIG_SET(CONFIG_COMMANDS)
OUTPUT = MYSSH.SEND_COMMAND('SHOW RUNN | INC BANNER’)
MYSSH IS THE SSH CONNECTION. CONFIG_COMMANDS IS A LIST VARIABLE.
MYSSH_CONFIG_SET SENDS ALL COMMANDS IN A LIST VARIABLE TO GLOBAL CONFIG.
MYSSH.SEND_COMMAND SENDS A SINGLE COMMAND TO THE PRIVILEGE EXEC MODE
NETWORK FUNCTIONS
CONFIGURING A ROUTER THRU SSH USING CONFIGURATION FILE
HOSTNAME = MYSSH.SEND_COMMAND('SHOW RUN | I HOST')
X = HOSTNAME.SPLIT()
DEVICENAME = X[1]
CMDFILE=DEVICENAME + ".TXT"
MYSSH.SEND_CONFIG_FROM_FILE(CMDFILE)
SEND_CONFIG_FROM_FILE WILL SEND THE CONTENTS OF THE FILENAME STORED IN THE CMDFILE VARIABLE.
THE CMDFILE VARIABLE IS CREATED BY DERIVING THE HOSTNAME AND CONCATENATING IT WITH .TXT.
NETWORK FUNCTIONS
READING FROM FILES
FROM NETMIKO IMPORT CONNECTHANDLER
WITH OPEN('DEVICES.TXT') AS XYZ:
FOR IP IN XYZ:
ABC = {
'DEVICE_TYPE': 'CISCO_IOS',
'IP': IP,
'USERNAME': 'KHAWAR',
'PASSWORD': 'CISCO'
}
MYSSH= CONNECTHANDLER(**ABC)
MYSSH.SEND_COMMAND('SH IP INT BRIEF’)
OPENS THE FILE ‘DEVICES.TXT’. READ A SINGLE LINE AND STORES THE CONTENT IN THE VARIABLE CALLED IP.
SSH’S INTO THE IP AND SENDS THE ‘SH IP INT BRIEF’ COMMAND TO IT
NETWORK FUNCTIONS
SPLIT FUNCTION
HOSTNAME = MYSSH.SEND_COMMAND('SHOW RUN | I HOST')
X=HOSTNAME.SPLIT()
DEVICE = X[1]
FILENAME = DEVICE + '-BACKUP.TXT’
HOSTNAME IS A VARIABLE THAT WILL STORE THE OUTPUT FROM THE SEND_COMMAND.
THE SPLIT FUNCTION WILL BREAK THE HOSTNAME INTO 2 ELEMENTS IN A LIST VARIABLE CALLED X. THE
ELEMENTS ARE CREATED BASED ON THE PRESENCE OF SPACE.
DEVICE WILL STORE THE SECOND ELEMENT IN THE X VARIABLE.
FILENAME IS A STRING VARIABLE COMBINING THE DEVICE VARIABLE WITH THE TEXT ‘-BACKUP.TXT’
NETWORK FUNCTIONS
WRITING TO A FILE
BBB = MYSSH.SEND_COMMAND('SHOW RUN’)
BBB_FILE = OPEN(‘R1-BACKUP.TXT’, “W")
BBB_FILE.WRITE(BBB)
BBB_FILE.WRITE("\N")
BBB_FILE.CLOSE()
BBB IS A VARIABLE THAT WILL HOLD THE CONTENTS OF THE ‘SHOW RUN’ COMMAND.
THE OPEN FUNCTION OPENS A FILE CALLED FILENAME(‘R1-BACKUP.TXT’) WITH THE ABILITY TO WRITE TO IT.
THE FILE IS CALLED BBB_FILE.
WRITE FUNCTION WRITES THE CONTENTS OF THE BBB VARIABLE TO THE BBB_FILE.