def __init__(self, hostname, username, password, timeout=60, optional_args=None): self.hostname = hostname self.username = username self.password = password self.timeout = timeout self.device = None self._scp_client = None self._new_config = None self._old_config = None self._ssh_usekeys = False # Netmiko possible arguments netmiko_argument_map = { 'port': None, 'secret': '', 'verbose': False, 'global_delay_factor': 1, 'use_keys': False, 'key_file': None, 'ssh_strict': False, 'system_host_keys': False, 'alt_host_keys': False, 'alt_key_file': '', 'ssh_config_file': None, } fields = netmiko_version.split('.') fields = [int(x) for x in fields] maj_ver, min_ver, bug_fix = fields if maj_ver >= 2: netmiko_argument_map['allow_agent'] = False elif maj_ver == 1 and min_ver >= 1: netmiko_argument_map['allow_agent'] = False # Build dict of any optional Netmiko args self.netmiko_optional_args = {} if optional_args is not None: for k, v in netmiko_argument_map.items(): try: self.netmiko_optional_args[k] = optional_args[k] except KeyError: pass self.global_delay_factor = optional_args.get( 'global_delay_factor', 1) self.port = optional_args.get('port', 22)
def __init__(self, hostname, username, password, timeout=60, optional_args=None): self.hostname = hostname self.username = username self.password = password self.timeout = timeout self.loaded = False self.changed = False self.device = None self.ssh_device = None self.ssh_connection = False self.merge_config = False if optional_args is None: optional_args = {} netmiko_argument_map = { 'port': None, 'verbose': False, 'use_keys': False, 'key_file': None, 'ssh_strict': False, 'system_host_keys': False, 'alt_host_keys': False, 'alt_key_file': '', 'ssh_config_file': None, } fields = netmiko_version.split('.') fields = [int(x) for x in fields] maj_ver, min_ver, bug_fix = fields if maj_ver >= 2: netmiko_argument_map['allow_agent'] = False elif maj_ver == 1 and min_ver >= 1: netmiko_argument_map['allow_agent'] = False # Build dict of any optional Netmiko args self.netmiko_optional_args = {} for k, v in netmiko_argument_map.items(): try: self.netmiko_optional_args[k] = optional_args[k] except KeyError: pass self.api_key = optional_args.get('api_key', '')
def __init__(self, hostname, username, password, timeout=60, optional_args=None): """ Constructor. Additional Optional args: - proxy_host - SSH hopping station - proxy_username - hopping station username - proxy_password - hopping station password - proxy_port - hopping station ssh port TODO: Set proxy host to work with user/password (works only with preloaded ssh-key in the ssh-agent for now) """ self.device = None self.hostname = hostname self.username = username self.password = password self.timeout = timeout if optional_args is None: optional_args = {} # proxy part self.proxy_host = optional_args.get('proxy_host', None) self.proxy_username = optional_args.get('proxy_username', None) self.proxy_password = optional_args.get('proxy_password', None) self.proxy_port = optional_args.get('proxy_port', None) # Check for proxy parameters and generate ssh config file if self.proxy_host: if self.proxy_port and self.proxy_username: print("Generate SSH proxy config file for hopping station: {}". format(self.proxy_host)) self.ssh_proxy_file = self._generate_ssh_proxy_file() else: raise ValueError("All proxy options must be specified ") else: self.ssh_proxy_file = None # Netmiko possible arguments netmiko_argument_map = { 'ip': None, 'username': None, 'password': None, 'port': None, 'secret': '', 'verbose': False, 'keepalive': 30, 'global_delay_factor': 2, 'use_keys': False, 'key_file': None, 'ssh_strict': False, 'system_host_keys': False, 'alt_host_keys': False, 'alt_key_file': '', 'ssh_config_file': None, } fields = netmiko_version.split('.') fields = [int(x) for x in fields] maj_ver, min_ver, bug_fix = fields if maj_ver >= 2: netmiko_argument_map['allow_agent'] = False elif maj_ver == 1 and min_ver >= 1: netmiko_argument_map['allow_agent'] = False # Build dict of any optional Netmiko args self.netmiko_optional_args = {} for k, v in netmiko_argument_map.items(): try: self.netmiko_optional_args[k] = optional_args[k] except KeyError: pass if self.ssh_proxy_file: self.netmiko_optional_args['ssh_config_file'] = self.ssh_proxy_file