home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
kermit.columbia.edu
/
kermit.columbia.edu.tar
/
kermit.columbia.edu
/
archives
/
ckscripts.zip
/
daily-session-log
< prev
next >
Wrap
Text File
|
2004-06-07
|
3KB
|
66 lines
# Daily-Session-Log
#
# Session log with automatic daily log file rotation.
# Assumes a connection (of any kind) is already open,
# e.g. to the control / logging port of a PBX, router, etc.
# Note: in C-Kermit 8.0.211 you can use INPUT /NOMATCH rather
# than specifying a "string that will never come".
#
# F. da Cruz, Columbia University, June 2004
#
# Parameters for this run, change as needed.
# HINT: Use forward slash (/) in Windows pathnames.
.current := c:/logs/ # Directory to run in
.archive := c:/archive/ # Directory to move old logs to
set session-log text # Log in text mode or...
set session-log timestamped-text # Do this if you want timesamps added
set input echo on # If you also want display on screen
# Local variables and macros
local logname # Name of log file
local mode # Mode in which to open it
def ON_CTRLC if open session-log close session-log # Ctrl-C trap
def ERRCHK if fail stop 1 "TROUBLE: \%1 - \v(errstring)" # Error handler
# Check directories and CD
if not directory \m(current) stop 1 "TROUBLE: \m(current) is not a directory"
if not directory \m(archive) stop 1 "TROUBLE: \m(archive) is not a directory"
cd \m(current) # CD to desired directory
# Loop to open session log, log to it until just before midnight, then
# close the log and move it to the archive directory.
while true { # Loop until interrupted
if open session-log close session-log # If a log is open close it
.logname := \v(ndate).log # Get name for new log
.mode := new # Mode in which to open it
if exist \m(logname) .mode := append # If file exists append to it
log session \m(logname) \m(mode) # Open the log file
errchk "Open Log \m(logname)"
if eq \m(mode) new { # Heading only if new file
writeln session-log \v(day) \v(date) \v(time)
}
# Record everything that arrives until just before midnight.
input 23:59:59 STRING_THAT_WILL_NEVER_COME
if success stop 1 "TROUBLE: Log \m(logname) terminated early"
if not open connection stop 1 "TROUBLE: Connection lost"
# At midnight close the log and rotate it, taking care not to
# overwrite any existing files. Assuming a reliable flow-controlled
# connection, no data will be lost during log rotation.
close session-log
errchk "Close Log \m(logname)"
if not exist \m(archive)\m(logname) {
rename \m(logname) \m(archive)
errchk "Rename Log \m(logname) to \m(archive)"
}
sleep 2 # Sleep until after midnight
}