def setUpClass(cls): # # command: pwd # def pwd_command_success(instance): instance.writeln("[OK]") def pwd_command_failure(instance): instance.writeln("MockSSH: Supported usage: pwd") command_pwd = MockSSH.ArgumentValidatingCommand( 'pwd', [pwd_command_success], [pwd_command_failure], *[]) # # command: ls # def ls_command_success(instance): instance.writeln("[OK]") def ls_command_failure(instance): instance.writeln("MockSSH: Supported usage: ls l") command_ls = MockSSH.ArgumentValidatingCommand('ls', [ls_command_success], [ls_command_failure], *["l"]) # # command: date # def date_command_success(instance): instance.writeln("[OK]") def date_command_failure(instance): instance.writeln("MockSSH: Supported usage: date") command_date = MockSSH.ArgumentValidatingCommand( 'date', [date_command_success], [date_command_failure], *[]) commands = [command_pwd, command_ls, command_date] users = {'testadmin': 'x'} cls.keypath = tempfile.mkdtemp() MockSSH.startThreadedServer(commands, prompt="hostname>", keypath=cls.keypath, interface="localhost", port=9999, **users)
# def conf_output_error(instance): instance.writeln("MockSSH: supported usage: conf t") def conf_output_success(instance): instance.writeln("Enter configuration commands, one per line. End " "with CNTL/Z") def conf_change_protocol_prompt(instance): instance.protocol.prompt = "hostname(config)#" command_conf = MockSSH.ArgumentValidatingCommand( 'conf', [conf_output_success, conf_change_protocol_prompt], [conf_output_error], *["t"]) # # command: exit # def exit_command_success(instance): if 'config' in instance.protocol.prompt: instance.protocol.prompt = "hostname#" else: instance.protocol.call_command(instance.protocol.commands['_exit']) def exit_command_failure(instance): instance.writeln("MockSSH: supported usage: exit")
from netman.adapters.shell.telnet import TelnetClient from netman.core.objects.exceptions import CouldNotConnect, CommandTimeout, ConnectTimeout from tests.adapters.shell.mock_telnet import MockTelnet from tests.adapters.shell.mock_terminal_commands import passwd_change_protocol_prompt, passwd_write_password_to_transport, \ HangingCommand, MultiAsyncWriteCommand, SkippingLineCommand, exit_command_success, KeystrokeAnsweredCommand, \ AmbiguousCommand command_passwd = MockSSH.PromptingCommand( name='passwd', password='******', prompt="Password:"******"Bonjour")], failure_callbacks=[lambda instance: instance.writeln("Nope")]) command_hang = HangingCommand(name='hang', hang_time=1.1) command_flush = MultiAsyncWriteCommand(name='flush', count=5, interval=0.1) command_skips= SkippingLineCommand(name='skips', lines=5) command_exit = MockSSH.ArgumentValidatingCommand('exit', [exit_command_success], [lambda instance: instance.writeln("Nope")], *[]) command_question = KeystrokeAnsweredCommand('keystroke')
fixture['tmctl -c pva_stat'] = open('mockssh/f5_tmctl_csv.txt').read() def cmd_parser(instance): cmd = " ".join(instance.args) if cmd in fixture: instance.writeln(fixture[cmd]) else: instance.writeln('Invalid command') def f5_prompt(instance): instance.protocol.prompt = '[user@F5-TEST:/S1-green-P:Active:In Sync] ~ # ' cmd_cisco_show = MockSSH.ArgumentValidatingCommand('show', [cmd_parser], [cmd_parser], *[]) cmd_f5_show = MockSSH.ArgumentValidatingCommand('show', [cmd_parser], [cmd_parser], *[]) cmd_f5_bash = MockSSH.ArgumentValidatingCommand('bash', [f5_prompt], [f5_prompt], *[]) cmd_f5_tmctl = MockSSH.ArgumentValidatingCommand('tmctl', [cmd_parser], [cmd_parser], *[]) def mock_cisco(): # Redirect stdout to null f = open(os.devnull, 'w') sys.stdout = f
'en', # the enable command ENABLE_PASS, # enable password 'Password: '******'enable', # the enable command ENABLE_PASS, # enable password 'Password: '******'conf', [conf_output_success, conf_change_protocol_prompt], [invalid_input], *["t"]) command_wr = MockSSH.ArgumentValidatingCommand( 'wr', [wr_build_config], [invalid_input], *["m"]) command_term_len = MockSSH.ArgumentValidatingCommand( 'term', [set_term_nopage], [invalid_input], *['len', '0'])