OXIESEC PANEL
- Current Dir:
/
/
usr
/
lib
/
python3
/
dist-packages
/
pexpect
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
03/17/2025 09:32:20 AM
rwxr-xr-x
📄
ANSI.py
11.89 KB
12/08/2015 06:43:59 PM
rw-r--r--
📄
FSM.py
13.1 KB
12/08/2015 06:43:59 PM
rw-r--r--
📄
__init__.py
3.81 KB
08/21/2016 08:02:13 PM
rw-r--r--
📁
__pycache__
-
09/28/2022 06:45:12 AM
rwxr-xr-x
📄
async.py
2.28 KB
12/08/2015 06:43:59 PM
rw-r--r--
📄
bashrc.sh
85 bytes
12/08/2015 06:43:59 PM
rw-r--r--
📄
exceptions.py
1.04 KB
12/08/2015 06:43:59 PM
rw-r--r--
📄
expect.py
10.45 KB
05/21/2016 11:43:27 AM
rw-r--r--
📄
fdpexpect.py
5.49 KB
07/09/2016 09:34:08 PM
rw-r--r--
📄
popen_spawn.py
5.42 KB
12/08/2015 06:43:59 PM
rw-r--r--
📄
pty_spawn.py
34.04 KB
07/09/2016 09:34:08 PM
rw-r--r--
📄
pxssh.py
18.43 KB
08/21/2016 07:57:33 PM
rw-r--r--
📄
replwrap.py
5.04 KB
07/09/2016 09:41:01 PM
rw-r--r--
📄
run.py
6.48 KB
12/08/2015 06:43:59 PM
rw-r--r--
📄
screen.py
13.39 KB
12/08/2015 06:43:59 PM
rw-r--r--
📄
spawnbase.py
19.62 KB
05/21/2016 11:43:27 AM
rw-r--r--
📄
utils.py
4.73 KB
07/09/2016 09:34:08 PM
rw-r--r--
Editing: async.py
Close
import asyncio import errno from pexpect import EOF @asyncio.coroutine def expect_async(expecter, timeout=None): # First process data that was previously read - if it maches, we don't need # async stuff. previously_read = expecter.spawn.buffer expecter.spawn.buffer = expecter.spawn.string_type() idx = expecter.new_data(previously_read) if idx is not None: return idx transport, pw = yield from asyncio.get_event_loop()\ .connect_read_pipe(lambda: PatternWaiter(expecter), expecter.spawn) try: return (yield from asyncio.wait_for(pw.fut, timeout)) except asyncio.TimeoutError as e: transport.pause_reading() return expecter.timeout(e) class PatternWaiter(asyncio.Protocol): transport = None def __init__(self, expecter): self.expecter = expecter self.fut = asyncio.Future() def found(self, result): if not self.fut.done(): self.fut.set_result(result) self.transport.pause_reading() def error(self, exc): if not self.fut.done(): self.fut.set_exception(exc) self.transport.pause_reading() def connection_made(self, transport): self.transport = transport def data_received(self, data): spawn = self.expecter.spawn s = spawn._decoder.decode(data) spawn._log(s, 'read') if self.fut.done(): spawn.buffer += s return try: index = self.expecter.new_data(s) if index is not None: # Found a match self.found(index) except Exception as e: self.expecter.errored() self.error(e) def eof_received(self): # N.B. If this gets called, async will close the pipe (the spawn object) # for us try: self.expecter.spawn.flag_eof = True index = self.expecter.eof() except EOF as e: self.error(e) else: self.found(index) def connection_lost(self, exc): if isinstance(exc, OSError) and exc.errno == errno.EIO: # We may get here without eof_received being called, e.g on Linux self.eof_received() elif exc is not None: self.error(exc)