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. If you want an interactive session, set interact=True when calling Shell()

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,
        json_logfile='/tmp/cmd_log.json',
        )

    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.75.tar.gz (25.8 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.75-py3-none-any.whl (31.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for cannon-0.0.75.tar.gz
Algorithm Hash digest
SHA256 27105980677995c8e5e9e8895f38e5f1d86269c1c5d52712007d2b64ec504e82
MD5 658b2a549fbe4331ba04a6449c50eb49
BLAKE2b-256 12e12b36d142250d6d0d7e669854de9ad5f38a2ef278bbcf23c5b0c823b37331

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cannon-0.0.75-py3-none-any.whl
Algorithm Hash digest
SHA256 471665f3b3356bbe245cecb40b968cdb501df87fe814a7aefae63ee04abb159d
MD5 198c92ba0a033b8b8d86a1b4967ffb0c
BLAKE2b-256 479e6109fb0708bb84580b0183fedca3ef17296f185ffead10ee7caebb05895b

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