Skip to main content

An SSH automation tool based on Exscript

Project description

Introduction

[cannon][1] is a wrapper around [exscript][2] to connect with remote server or network devices with ssh.

Example Usage - Cisco IOS

This script will login, run a few show commands

import sys

from cannon import Shell, Account
from loguru import logger

log_stderr_id = logger.add(sink=sys.stderr)

@logger.catch(default=True, onerror=lambda _: sys.exit(1))
def main():
    sess = Shell(
        host='route-views.routeviews.org',
        # route-views doesn't need password
        account= Account(name='rviews', password=''),
        debug=0,
        )

    sess.execute('term len 0')

    sess.execute('show clock')

    sess.execute('show version')
    version_text = sess.response

    # template is a TextFSM template
    values = sess.execute('show ip int brief',
        template="""Value INTF (\S+)\nValue IPADDR (\S+)\nValue STATUS (up|down|administratively down)\nValue PROTO (up|down)\n\nStart\n  ^${INTF}\s+${IPADDR}\s+\w+\s+\w+\s+${STATUS}\s+${PROTO} -> Record""")
    print("VALUES "+str(values))
    sess.close()

Example Usage - Linux

from getpass import getpass
import sys

from cannon.main import Shell, Account

log_stderr_id = logger.add(sink=sys.stderr)

@logger.catch(default=True, onerror=lambda _: sys.exit(1))
def main():
    account = Account("mpenning", getpass("Login password: "))
    conn = Shell(host="127.0.0.1", port=22, account=account, driver="generic", debug=0)
    assert conn is not None
    example_tfsm_template = """Value UNAME_LINE (.+)

Start
  ^${UNAME_LINE}
"""
    print(conn.execute("sudo uname -a", debug=0, template=example_tfsm_template, timeout=2))
    print(conn.execute("whoami", debug=0, template=None, timeout=2))
    #print("FOO2", conn.response)
    conn.close(force=True)

if __name__=="__main__":
    main()

Example test suite setup

  • git clone git@github.com:knipknap/Exscript

  • cd into Exscript/tests/Exscript/protocols and chmod 600 id_rsa

  • exscript spawns a local tests ssh daemon, pytest Exscript/tests/Exscript/protocols/SSH2Test.py

  • Connect with ssh -i id_rsa -p 1236 user@localhost

  • one command is supported: ls

    [1]: https://pypi.python.org/pypi/cannon # cannon on pypi [2]: https://pypi.python.org/pypi/exscript # Exscript on pypi

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cannon-0.0.53.tar.gz (23.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cannon-0.0.53-py3-none-any.whl (29.2 kB view details)

Uploaded Python 3

File details

Details for the file cannon-0.0.53.tar.gz.

File metadata

  • Download URL: cannon-0.0.53.tar.gz
  • Upload date:
  • Size: 23.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.11 CPython/3.7.0 Linux/5.10.0-9-amd64

File hashes

Hashes for cannon-0.0.53.tar.gz
Algorithm Hash digest
SHA256 a132842cd2809b26bf1f5239f9aca90652b817b457f376565bf8f56efffbde25
MD5 ac25892d7d23c16ec545cb5faf5cb5ef
BLAKE2b-256 c10a15bb330672ff01ebc847d91c11e513e8c4c01d7595c250bf757fe941a7fb

See more details on using hashes here.

File details

Details for the file cannon-0.0.53-py3-none-any.whl.

File metadata

  • Download URL: cannon-0.0.53-py3-none-any.whl
  • Upload date:
  • Size: 29.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.11 CPython/3.7.0 Linux/5.10.0-9-amd64

File hashes

Hashes for cannon-0.0.53-py3-none-any.whl
Algorithm Hash digest
SHA256 9745b8fd5a391beafeea2fe50b8bd62aa8b93ae9b48745652c40bdbaabda7de6
MD5 ba810b5a77f76b9f91ace78cb4c63b58
BLAKE2b-256 eb0280edd8b8c64ba57f21878b5b6c0d2e7aebc5ff5c9c489203e1e75fdaeddf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page