from sys import stdout import ExpectPy ExpectPy.settings.loguser = 0 # we write to /dev/null so there is no clean up afterward spawn_id = ExpectPy.spawn('/bin/ed', 'ed', '/dev/null') try: # if this isn't taken now, then the GLOB below will take it incorrectly spawn_id.expect((ExpectPy.EXACT, "0\r\n", 0)) spawn_id.send('0a\rHello\r.\rw\r') # get the full-duplex output from the above commands spawn_id.expect((ExpectPy.EXACT, '.\r\nw\r\n', 0)) rc = spawn_id.expect( (ExpectPy.EXACT, '6\r\n', 1), (ExpectPy.GLOB, '*\r\n', 2) ) if rc == 1: stdout.write('Test okay\n') status = 1 elif rc == 2: stdout.write('Test failed\n') status = 0 spawn_id.send('q\r') except EOFError: stdout.write('Test ended prematurely\n') spawn_id.close()