Exemple #1
0
 def createVirtualDevice(self):
     self.banner = 'Welcome to %s!\n' % self.hostname
     self.prompt = self.hostname + '> '
     self.device = VirtualDevice(self.hostname, echo=True)
     ls_response = '-rw-r--r--  1 sab  nmc    1628 Aug 18 10:02 file'
     self.device.add_command('ls', ls_response)
     self.device.add_command('df', 'foobar')
     self.device.add_command('exit', '')
     self.device.add_command('this-command-causes-an-error',
                             '\ncommand not found')
Exemple #2
0
    def __init__(self, device=None, **kwargs):
        """
        @note: Also supports all keyword arguments that L{Protocol} supports.

        @keyword device: The L{Exscript.emulators.VirtualDevice} with
            which to communicate.
        """
        Protocol.__init__(self, **kwargs)
        self.device = device
        self.init_done = False
        self.cancel = False
        self.response = None
        if not self.device:
            self.device = VirtualDevice('dummy', strict=False)
Exemple #3
0
    def __init__(self, device=None, **kwargs):
        """
        .. HINT::
            Also supports all keyword arguments that :class:`Protocol` supports.

        :keyword device: The :class:`Exscript.emulators.VirtualDevice` with
            which to communicate.
        """
        Protocol.__init__(self, **kwargs)
        self.device = device
        self.init_done = False
        self.cancel = False
        self.response = None
        if not self.device:
            self.device = VirtualDevice('dummy', strict=False)
Exemple #4
0
 def setUp(self):
     self.host = 'localhost'
     self.port = 1235
     self.device = VirtualDevice(self.host, echo=False)
     self.daemon = Server(self.host, self.port, self.device)
     self.device.set_prompt(self.host + ':' + str(self.port) + '> ')
Exemple #5
0
    def testDummy(self):
        # Test simple instance with banner.
        protocol = Dummy(device = self.device)
        protocol.connect('testhost')
        self.assertEqual(str(protocol.buffer), '')
        self.assertEqual(protocol.response, None)
        protocol.close()

        # Test login.
        protocol = Dummy(device = self.device)
        protocol.connect('testhost')
        self.assertEqual(str(protocol.buffer), '')
        self.assertEqual(protocol.response, None)
        protocol.login(self.account, flush = False)
        self.assertEqual(protocol.buffer.tail(len(self.prompt)), self.prompt)
        protocol.close()

        # Test login with user prompt.
        device = VirtualDevice(self.hostname,
                               echo       = True,
                               login_type = VirtualDevice.LOGIN_TYPE_USERONLY)
        protocol = self._create_dummy_and_eat_banner(device)
        self.assertEqual(str(protocol.buffer), 'User: '******'Password: '******'User: '******'')
        self.assertEqual(protocol.response, self.user + '\r')
        protocol.close()

        # Test login with password prompt and wait parameter.
        device = VirtualDevice(self.hostname,
                               echo       = True,
                               login_type = VirtualDevice.LOGIN_TYPE_PASSWORDONLY)
        protocol = self._create_dummy_and_eat_banner(device)
        self.assertEqual(str(protocol.buffer), 'Password: '******'')
        self.assertEqual(protocol.response, self.password + '\r')
        protocol.close()

        # Test login with port number.
        protocol = self._create_dummy_and_eat_banner(device, 1234)
        self.assertEqual(str(protocol.buffer), 'Password: '******'')
        self.assertEqual(protocol.response, self.password + '\r')
        protocol.close()

        # Test a custom response.
        device = VirtualDevice(self.hostname,
                               echo       = True,
                               login_type = VirtualDevice.LOGIN_TYPE_NONE)
        protocol = Dummy(device = device)
        command  = re.compile(r'testcommand')
        response = 'hello world\r\n%s> ' % self.hostname
        device.add_command(command, response, prompt = False)
        protocol.set_prompt(re.compile(r'> $'))
        protocol.connect('testhost')
        protocol.expect(re.compile(re.escape(self.banner)))
        self.assertEqual(protocol.response, '')
        self.assertEqual(str(protocol.buffer), self.prompt)
        protocol.expect_prompt()
        self.assertEqual(str(protocol.buffer), '')
        self.assertEqual(protocol.response, self.hostname)
        protocol.execute('testcommand')
        expected = 'testcommand\rhello world\r\n' + self.hostname
        self.assertEqual(protocol.response, expected)
        self.assertEqual(str(protocol.buffer), '')
        protocol.close()