Tuesday, November 1, 2016

Paramiko and SSH via Python 2.x



I am trying to port all the powershell based QA automation scripts to python. I was using plink to send ssh commands to the targets, mainly cisco switches and store output to a text file and then generate an html report with selected output from the text file. It seems paramiko is the favorite of all when it comes to ssh via python.
Here I want to share a post on how easy it is achieve this.
First let us define the variables which we will be using.

target = '10.1.1.1 #cisco nexus 9000
username = 'admin' #username
password = ‘@dmin' #password
command = 'show run' #command to run

and the rest of the stuff which does the actual work is

import paramiko #import paramiko module
ssh = paramiko.SSHClient() #create an ssh client
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #auto accept ssh key
ssh.connect(target, port=22, username=username, password=password) #connect to the target
stdin, stdout, stderr = ssh.exec_command(command) #execute the command
output = stdout.readlines() #get the output
outstore = '\n'.join(output) #format the output to print each line in a new line
print output #print output

I have added the description against each line for you to understand what and how does it work.
If you have many commands for which you want the output then just go ahead and create an array and run a loop against that array. If you want the output to be written to a text file then modify the last line accordingly. I hope this is enough to get you started.
The code is somewhere here https://github.com/MrAmbiG/python