Skip to content

vsantiago113/Devmiko

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Devmiko


PyPI - Status PyPI - Format GitHub GitHub release (latest by date) PyPI - Python Version

A SSH client for systems network automation.

Documentation

Paramiko - SFTPClient
Paramiko - SSHClient

Dependencies

Paramiko

How to install

$ pip install Devmiko

Usage

The client.output holds the full output from all the commands you sent.

SSHClient example

import Devmiko

client = Devmiko.SSHClient(debug=False, filename=None, level='DEBUG')
client.connect('remote_host', username='myusername', password='mypassword')

client.send_command('ls')
client.send_command('sudo su', expect_string=r'^.*Password: $')
client.send_command('mypassword')
print(client.output)

client.disconnect()

Turn on debugging to help you troubleshoot issues with the SSH connection

import Devmiko

client = Devmiko.SSHClient(debug=True, filename='mylogfile.log', level='DEBUG')

You can pass arguments and keyword arguments to the paramiko connection method. Check out the paramiko docs

import Devmiko

client = Devmiko.SSHClient()
client.connect(*args, **kwargs)

How to break out of a prompt? You have to pass the keyword argument expect_string with a regex

import Devmiko

client = Devmiko.SSHClient()
client.connect('remote_host', username='myusername', password='mypassword')

client.send_command('sudo su', expect_string=r'^.*Password: $') # Here we are breaking the prompt at Password:
client.send_command('mypassword')

client.disconnect()

Using Paramiko methods from the Devmiko channel

import Devmiko
import re

client = Devmiko.SSHClient()
client.connect('remote_host', username='myusername', password='mypassword')

client.channel.sendall('ls\n')
output = ''
while True:
    temp_output = client.channel.recv(4096).encode('UTF-8')
    output += temp_output
    if re.search(r'>\s$', temp_output, flags=re.IGNORECASE | re.MULTILINE):
        break

print(output)

client.disconnect()

SFTPClient example

For the SFTPClient you need to use the client.channel and use the paramiko methods

import Devmiko

client = Devmiko.SFTPClient()
client.connect('remote_host', username='myusername', password='mypassword')

client.channel.chdir(path='/tmp')
output = client.channel.getcwd()
print(output)
output = client.channel.listdir(path='.')
print(output)
client.channel.get('/tmp/Cleanup.log', 'Downloads/Cleanup.log')

client.disconnect()

Download Files with Progressbar

import Devmiko

client = Devmiko.SFTPClient()
client.connect('remote_host', username='myusername', password='mypassword')

client.get_with_progressbar(remote_file='/tmp/myfile.tar', local_file='Downloads/myfile.tar')

client.disconnect()

Upload Files with Progressbar

import Devmiko

client = Devmiko.SFTPClient()
client.connect('remote_host', username='myusername', password='mypassword')

client.put_with_progressbar(local_file='myfile.tar', remote_file='/tmp/myfile.tar')

client.disconnect()

FTDClient example

The FTDClient include the different Command Line Modes of the FTD so you can enter or switch from mode to mode.

import Devmiko

client = Devmiko.FTDClient(debug=False, filename=None, level='DEBUG')
client.connect('remote_host', username='myusername', password='mypassword')

client.send_command(command='show managers')

client.enter_lina_mode()
client.send_command(command='show run | include hostname')

client.enter_clish_mode()
client.send_command(command='show managers')
client.send_command(command='show failover')

client.enter_diagnostic_cli_mode()
client.send_command(command='show run | include hostname')

client.enter_expert_mode()
client.send_command(command='ls /tmp')

client.enter_regular_mode()
client.send_command(command='show managers')
client.send_command(command='show network')


print(client.output)
client.disconnect()

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages