Guido van Rossum | f06ee5f | 1996-11-27 19:52:01 +0000 | [diff] [blame] | 1 | #! /usr/bin/env python |
Guido van Rossum | 07c9645 | 1994-10-03 16:45:35 +0000 | [diff] [blame] | 2 | # script.py -- Make typescript of terminal session. |
| 3 | # Usage: |
Tim Peters | e6ddc8b | 2004-07-18 05:56:09 +0000 | [diff] [blame] | 4 | # -a Append to typescript. |
| 5 | # -p Use Python as shell. |
Guido van Rossum | 07c9645 | 1994-10-03 16:45:35 +0000 | [diff] [blame] | 6 | # Author: Steen Lumholt. |
| 7 | |
| 8 | |
| 9 | import os, time, sys |
| 10 | import pty |
| 11 | |
| 12 | def read(fd): |
Tim Peters | e6ddc8b | 2004-07-18 05:56:09 +0000 | [diff] [blame] | 13 | data = os.read(fd, 1024) |
| 14 | file.write(data) |
| 15 | return data |
Guido van Rossum | 07c9645 | 1994-10-03 16:45:35 +0000 | [diff] [blame] | 16 | |
| 17 | shell = 'sh' |
| 18 | filename = 'typescript' |
| 19 | mode = 'w' |
| 20 | if os.environ.has_key('SHELL'): |
Tim Peters | e6ddc8b | 2004-07-18 05:56:09 +0000 | [diff] [blame] | 21 | shell = os.environ['SHELL'] |
Guido van Rossum | 07c9645 | 1994-10-03 16:45:35 +0000 | [diff] [blame] | 22 | if '-a' in sys.argv: |
Tim Peters | e6ddc8b | 2004-07-18 05:56:09 +0000 | [diff] [blame] | 23 | mode = 'a' |
Guido van Rossum | 07c9645 | 1994-10-03 16:45:35 +0000 | [diff] [blame] | 24 | if '-p' in sys.argv: |
Tim Peters | e6ddc8b | 2004-07-18 05:56:09 +0000 | [diff] [blame] | 25 | shell = 'python' |
Guido van Rossum | 07c9645 | 1994-10-03 16:45:35 +0000 | [diff] [blame] | 26 | |
| 27 | file = open(filename, mode) |
| 28 | |
| 29 | sys.stdout.write('Script started, file is %s\n' % filename) |
| 30 | file.write('Script started on %s\n' % time.ctime(time.time())) |
| 31 | pty.spawn(shell, read) |
| 32 | file.write('Script done on %s\n' % time.ctime(time.time())) |
| 33 | sys.stdout.write('Script done, file is %s\n' % filename) |