| 
									
										
										
										
											2010-03-11 22:53:45 +00:00
										 |  |  | #! /usr/bin/env python3 | 
					
						
							| 
									
										
										
										
											2009-10-11 12:04:10 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-10-03 16:45:35 +00:00
										 |  |  | # script.py -- Make typescript of terminal session. | 
					
						
							|  |  |  | # Usage: | 
					
						
							| 
									
										
										
										
											2004-07-18 05:56:09 +00:00
										 |  |  | #       -a      Append to typescript. | 
					
						
							|  |  |  | #       -p      Use Python as shell. | 
					
						
							| 
									
										
										
										
											1994-10-03 16:45:35 +00:00
										 |  |  | # Author: Steen Lumholt. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-11 12:04:10 +00:00
										 |  |  | import os, time, sys, getopt | 
					
						
							| 
									
										
										
										
											1994-10-03 16:45:35 +00:00
										 |  |  | import pty | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def read(fd): | 
					
						
							| 
									
										
										
										
											2004-07-18 05:56:09 +00:00
										 |  |  |     data = os.read(fd, 1024) | 
					
						
							| 
									
										
										
										
											2009-10-11 12:04:10 +00:00
										 |  |  |     script.write(data) | 
					
						
							| 
									
										
										
										
											2004-07-18 05:56:09 +00:00
										 |  |  |     return data | 
					
						
							| 
									
										
										
										
											1994-10-03 16:45:35 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | shell = 'sh' | 
					
						
							|  |  |  | filename = 'typescript' | 
					
						
							| 
									
										
										
										
											2009-10-11 12:04:10 +00:00
										 |  |  | mode = 'wb' | 
					
						
							| 
									
										
										
										
											2007-07-17 20:59:35 +00:00
										 |  |  | if 'SHELL' in os.environ: | 
					
						
							| 
									
										
										
										
											2004-07-18 05:56:09 +00:00
										 |  |  |     shell = os.environ['SHELL'] | 
					
						
							| 
									
										
										
										
											1994-10-03 16:45:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-11 12:04:10 +00:00
										 |  |  | try: | 
					
						
							|  |  |  |     opts, args = getopt.getopt(sys.argv[1:], 'ap') | 
					
						
							|  |  |  | except getopt.error as msg: | 
					
						
							|  |  |  |     print('%s: %s' % (sys.argv[0], msg)) | 
					
						
							|  |  |  |     sys.exit(2) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | for o, a in opts: | 
					
						
							|  |  |  |     if o == '-a': | 
					
						
							|  |  |  |         mode = 'ab' | 
					
						
							|  |  |  |     elif o == '-p': | 
					
						
							|  |  |  |         shell = 'python' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | script = open(filename, mode) | 
					
						
							| 
									
										
										
										
											1994-10-03 16:45:35 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | sys.stdout.write('Script started, file is %s\n' % filename) | 
					
						
							| 
									
										
										
										
											2009-10-11 12:04:10 +00:00
										 |  |  | script.write(('Script started on %s\n' % time.ctime(time.time())).encode()) | 
					
						
							| 
									
										
										
										
											1994-10-03 16:45:35 +00:00
										 |  |  | pty.spawn(shell, read) | 
					
						
							| 
									
										
										
										
											2009-10-11 12:04:10 +00:00
										 |  |  | script.write(('Script done on %s\n' % time.ctime(time.time())).encode()) | 
					
						
							| 
									
										
										
										
											1994-10-03 16:45:35 +00:00
										 |  |  | sys.stdout.write('Script done, file is %s\n' % filename) |