Sindbad~EG File Manager
from netmiko.base_connection import BaseConnection
import time
class YamahaBase(BaseConnection):
def session_preparation(self):
"""Prepare the session after the connection has been established."""
self._test_channel_read(pattern=r"[>#]")
self.set_base_prompt()
self.disable_paging(command="console lines infinity")
time.sleep(0.3 * self.global_delay_factor)
self.clear_buffer()
def check_enable_mode(self, check_string="#"):
return super().check_enable_mode(check_string=check_string)
def enable(self, cmd="administrator", pattern=r"Password", **kwargs):
return super().enable(cmd=cmd, pattern=pattern, **kwargs)
def exit_enable_mode(self, exit_command="exit"):
"""
When any changes have been made, the prompt 'Save new configuration ? (Y/N)'
appears before exiting. Ignore this by entering 'N'.
"""
output = ""
if self.check_enable_mode():
self.write_channel(self.normalize_cmd(exit_command))
time.sleep(1)
output = self.read_channel()
if "(Y/N)" in output:
self.write_channel("N")
if self.base_prompt not in output:
output += self.read_until_prompt()
if self.check_enable_mode():
raise ValueError("Failed to exit enable mode.")
return output
def check_config_mode(self, check_string="#", pattern=""):
"""Checks if the device is in administrator mode or not."""
return super().check_config_mode(check_string=check_string, pattern=pattern)
def config_mode(self, config_command="administrator", pattern="ssword"):
"""Enter into administrator mode and configure device."""
return self.enable()
def exit_config_mode(self, exit_config="exit", pattern=">"):
"""
No action taken. Call 'exit_enable_mode()' to explicitly exit Administration
Level.
"""
return ""
def save_config(self, cmd="save", confirm=False, confirm_response=""):
"""Saves Config."""
if confirm is True:
raise ValueError("Yamaha does not support save_config confirmation.")
self.enable()
# Some devices are slow so match on trailing-prompt if you can
return self.send_command(command_string=cmd)
class YamahaSSH(YamahaBase):
"""Yamaha SSH driver."""
pass
class YamahaTelnet(YamahaBase):
"""Yamaha Telnet driver."""
def __init__(self, *args, **kwargs):
default_enter = kwargs.get("default_enter")
kwargs["default_enter"] = "\n" if default_enter is None else default_enter
super().__init__(*args, **kwargs)
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists