blob: a8aca4ae3597d1f251f314c66261a9b04f4f3cc6 [file] [log] [blame]
Guido van Rossumf06ee5f1996-11-27 19:52:01 +00001#! /usr/bin/env python
Georg Brandlce662d02009-10-11 12:00:18 +00002
Guido van Rossum07c96451994-10-03 16:45:35 +00003# script.py -- Make typescript of terminal session.
4# Usage:
Tim Peterse6ddc8b2004-07-18 05:56:09 +00005# -a Append to typescript.
6# -p Use Python as shell.
Guido van Rossum07c96451994-10-03 16:45:35 +00007# Author: Steen Lumholt.
8
9
Georg Brandlce662d02009-10-11 12:00:18 +000010import os, time, sys, getopt
Guido van Rossum07c96451994-10-03 16:45:35 +000011import pty
12
13def read(fd):
Tim Peterse6ddc8b2004-07-18 05:56:09 +000014 data = os.read(fd, 1024)
Georg Brandl8ec30e82009-10-11 12:03:01 +000015 script.write(data)
Tim Peterse6ddc8b2004-07-18 05:56:09 +000016 return data
Guido van Rossum07c96451994-10-03 16:45:35 +000017
18shell = 'sh'
19filename = 'typescript'
20mode = 'w'
21if os.environ.has_key('SHELL'):
Tim Peterse6ddc8b2004-07-18 05:56:09 +000022 shell = os.environ['SHELL']
Guido van Rossum07c96451994-10-03 16:45:35 +000023
Georg Brandlce662d02009-10-11 12:00:18 +000024try:
25 opts, args = getopt.getopt(sys.argv[1:], 'ap')
26except getopt.error, msg:
27 print '%s: %s' % (sys.argv[0], msg)
28 sys.exit(2)
29
30for o, a in opts:
31 if o == '-a':
32 mode = 'a'
33 elif o == '-p':
34 shell = 'python'
35
36script = open(filename, mode)
Guido van Rossum07c96451994-10-03 16:45:35 +000037
38sys.stdout.write('Script started, file is %s\n' % filename)
Georg Brandlce662d02009-10-11 12:00:18 +000039script.write('Script started on %s\n' % time.ctime(time.time()))
Guido van Rossum07c96451994-10-03 16:45:35 +000040pty.spawn(shell, read)
Georg Brandlce662d02009-10-11 12:00:18 +000041script.write('Script done on %s\n' % time.ctime(time.time()))
Guido van Rossum07c96451994-10-03 16:45:35 +000042sys.stdout.write('Script done, file is %s\n' % filename)