def worker(device): try : connection = netmiko.connectionHandler(**device) except(NetmikoTimeoutException): print('Timeout to device: '+ ip ) continue except(AuthenticationException): print('Authentication Failure to device : '+ ip) continue except(SSHException): print('SSH connection issue to device : '+ ip ) continue except(EOFError): print('End of file while attempting device : '+ ip) continue except Exception as unknown_error: print('Unknown Error: '+ unknown_error +' to device: ' + ip) continue print(connection) #Available versions (Switch or Router) list_versions = ['vios_l2-ADVENTERPRISEK9-M','VIOS-ADVENTERPRISEK9-M'] # Check version from the device and send proper commands for version in list_versions: print('Checking software version for '+version) #Check device software version output_version = connection.send_command('show version') #if found run appropriate commands if output_version.find(version)>0 : print('Software version: '+ output_version) if version=='vios_l2-ADVENTERPRISEK9-M': print('Running commands for version '+ version) print(connection.send_command(commands_to_send_switch)) elif version=='VIOS-ADVENTERPRISEK9-M' : print(connection.send_command(commands_to_send_router)) break else : print('Not running commands for version: ' + version) connection.disconnect()
""" This script uses netmiko library to connect to Cisco switch and sends 'Show ip int breif' command Device details are stored in iosv_l2_s1 dictionary """ import netmiko iosv_l2_s1 = { 'device_type' = 'cisco_ios', 'ip' = '192.168.122.71', 'usernmae' = 'admin', 'password' = 'cisco' } #create connection to a network device connection = netmiko.connectionHandler(**iosv_l2_s1) print(connection) #print show ip interfaces print(connection.send_command('Show ip int breif')) #Disconnect a connection connection.disconnect() #will give socket error since, connection is already closed print(connection.send_command('Show ip int breif'))
Instead of hard coding username and password, this script prompts the user to enter username and password devices_ip.txt consists device ip addresses to send commands to. """ form getpass import getpass import netmiko username = input('Enter SSH username: '******'commands_file.txt', 'r') as f: commands_to_send = f.read().splitlines() with open('devices_ip.txt', 'r') as f: device_ip = f.read().splitlines() for ip in device_ip: print('Connecting to device: '+ ip) device = { 'device_type' = 'cisco_ios', 'ip' = ip, 'usernmae' = username, 'password' = password } connection = netmiko.connectionHandler(**device) print(connection) print(connection.send_command(commands_to_send)) connection.disconnect()