https://github.com/knipknap/exscript
A Python module making Telnet and SSH easy
https://github.com/knipknap/exscript
automation expect exscript network networking protocol python ssh telnet
Last synced: 3 days ago
JSON representation
A Python module making Telnet and SSH easy
- Host: GitHub
- URL: https://github.com/knipknap/exscript
- Owner: knipknap
- License: mit
- Created: 2009-11-05T15:34:34.000Z (over 16 years ago)
- Default Branch: master
- Last Pushed: 2025-08-05T16:11:37.000Z (8 months ago)
- Last Synced: 2026-03-26T01:33:50.614Z (16 days ago)
- Topics: automation, expect, exscript, network, networking, protocol, python, ssh, telnet
- Language: Python
- Homepage:
- Size: 5.12 MB
- Stars: 375
- Watchers: 46
- Forks: 131
- Open Issues: 46
-
Metadata Files:
- Readme: README.md
- License: COPYING
- Authors: AUTHORS
Awesome Lists containing this project
README
# Exscript
[](https://travis-ci.org/knipknap/exscript)
[](https://coveralls.io/github/knipknap/exscript?branch=master)
[](https://lima.codeclimate.com/github/knipknap/exscript)
[](http://exscript.readthedocs.io/en/latest/?badge=latest)
[](https://houndci.com)
## Summary
Exscript is a Python module and a template processor for automating network
connections over protocols such as Telnet or SSH. We attempt to create the
best possible set of tools for working with Telnet and SSH.
Exscript also provides a set of tools and functions for sysadmins, that
simplify **regular expression matching**, **reporting** by email, **logging**,
or **syslog** handling, **CSV parsing**, **ip address handling**,
**template processing**, and many more.
Exscript may be used to automate sessions with routers from Cisco, Juniper,
OneAccess, Huawei, or any others. If you want to configures machines
running Linux/Unix, IOS, IOS-XR, JunOS, VRP, or any other operating system
that can be used with a terminal, Exscript is what you are looking for.
## Do you need commercial support?
Exscript is supported by [Procedure 8](https://procedure8.com). Get in touch if you need anything!
## Method 1: Using Exscript with Python
### Simple
```python
from Exscript.protocols import SSH2
from Exscript.util.interact import read_login
conn = SSH2()
conn.connect('localhost')
conn.login(read_login())
conn.execute('uname -a')
```
### Slightly more advanced (multi threaded)
```python
from Exscript.util.start import start
from Exscript.util.file import get_hosts_from_file
from Exscript.util.file import get_accounts_from_file
def do_something(job, host, conn):
conn.execute('uname -a')
accounts = get_accounts_from_file('accounts.cfg')
hosts = get_hosts_from_file('myhosts.txt')
start(accounts, hosts, do_something, max_threads=2)
```
## Method 2: Using the Exscript command line tool
Create a file named `test.exscript` with the following content:
```
uname -a
```
To run this Exscript template, just start Exscript using the following command:
```
exscript test.exscript ssh://localhost
```
Awesome fact: Just replace `ssh://` by `telnet://` and it should still work with Telnet devices.
## Documentation
Full documentation is here:
http://exscript.readthedocs.io