Instantly share code, notes, and snippets.

Embed
What would you like to do?
Simple script to connect on network devices and run commands
#!/usr/bin/python3
# Simple script to connect on network devices and run commands
# ./netmiko-test.py -u lsanmartin -c "show version" -m cisco_ios -s labsw.domain.tld
import sys
import argparse
from datetime import datetime
from getpass import getpass
try:
from netmiko import ConnectHandler
except ImportError:
print('Please install netmiko\n')
print('i.e. pip install netmiko\n')
sys.exit(1)
except:
print("Unexpected error:", sys.exc_info()[0])
raise
def main(username, device, cmd, device_type):
# Use argparse
pwd = getpass('Password: ')
# Device parameters
dev = {
'device_type': device_type,
'ip': device,
'username': username,
'secret': pwd,
'password': pwd,
'global_delay_factor': 3,
}
# Establish an SSH connection to the device by passing in the device dictionary
net_connect = ConnectHandler(**dev)
print("\nStart time: {}".format(str(datetime.now())))
print("---------------------------------")
print('Host: {}'.format(device))
# Enable mode
net_connect.enable()
# Execute command
out = net_connect.send_command(cmd)
net_connect.disconnect()
print(out)
print("---------------------------------")
if __name__ == '__main__':
# Build up arguments
parser = argparse.ArgumentParser()
parser.add_argument(
'-u', action='store', dest='username', help='Username', required=True)
parser.add_argument(
'-s', action='store', dest='device', help='Host to connect', required=True)
parser.add_argument(
'-m', action='store', dest='device_type', help='Device type', required=False,
choices=['a10', 'dell_force10', 'cisco_ios'], default='cisco_ios')
parser.add_argument(
'-c', action='store', dest='cmd', help='Command to execute', required=True)
args = parser.parse_args()
# Read parameters and pass them to main
main(args.username, args.device, args.cmd, args.device_type)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment