I am trying to pull the running configuration of a device using paramiko. While I get the output of all the commands like sh cdp neigh, sh int status quite easily, whenever I try to pull the running configuration from the Cisco device - it gives me 'Line has an invalid command'. This is true in the case of direct command - 'sh run' and also 'sh run interface ' command. Here is the code which I have used. It would be great if someone can help. I have searched everywhere, but I am no closure to resolving this.
import atexit
import paramiko
import os
import re
global sshdata
global hostname
global ips
ip = input("Enter the IP of the device you want to start from ")
username = input("Enter your username ")
password = input("Enter your password ")
class myssh:
    def __init__(self, host, user, password, port = 22):
        client = paramiko.SSHClient()
        client.load_system_host_keys()
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        client.connect(host, port=port, username=user, password=password)
        atexit.register(client.close)
        self.client = client
    def __call__(self, command):
        global sshdata,hostname,privilege,ips,interfaces,protocols
        stdin,stdout,stderr = self.client.exec_command(command)
        sshdata = stdout.readlines()
        if command == 'enable':
                stdin.write(password)
        elif command == 'sh priv':
                privilege = sshdata[1]
        elif command == 'sh run | in hostname':
                temp = sshdata
                temp = (''.join(temp))
                temp = (str(temp)).split()
                hostname = temp[1]
        else:
            #print (''.join(sshdata))
            output_file=open(hostname+'.txt',"a")
            output_file.write(str(command))
            output_file.write('\n\n')
            output_file.write(str(''.join(sshdata)))
            output_file.write('\n\n\n\n')
remote = myssh(ip,username,password)
remote('sh priv')
if privilege == 'Current privilege level is 1' :
  remote = myssh(ip,username,password)
  remote('enable')
  #print("*****************************I come here***********************")
remote = myssh(ip,username,password)
remote('ter len 0')
remote = myssh(ip,username,password)
remote('sh run')
 
Comments
Post a Comment