home *** CD-ROM | disk | FTP | other *** search
- #!/usr/local/bin/perl
-
- ## Run from cron periodically
- ##
- ## If Slip Device Lock Exists
- ## If file is over 3 hours old
- ## Remove It
- ## Issue A KillSlip
- ##
- ## Major purpose is to keep from hogging slip line and running up charges
- ##
- ## It should also do a netstat and monitor packet transmissions, and not
- ## kill the connection if some arbitrary threashold is exceeded.
- ##
- ## This could be tons smarter with minor effort ...coggs
- ##
-
- $LockPath = "/usr/spool/locks/LCK..";
- $SlipDevice = "cuab";
- $DevLockFile = "${LockPath}${SlipDevice}";
-
- $SlipLock = "slip";
- $SlipLockFile = "${LockPath}${SlipLock}";
- $SlipIf = "slip0";
- $NetstatPipe = "netstat -r -n | grep $SlipIf | grep default |";
-
- $MaxDiff = 60 * 60 * 3;
-
- $TouchCmd = "/usr/bin/touch";
- $TmStmpFile = "${LockPath}ageslip";
-
- $unlockslip = "rm $SlipLockFile";
- $killslip = "/usr/local/bin/killslip";
-
- #
- ##
- #
- sub CheckModTime {
-
- # 0 1 2 3 4 5 6 7 8 9 10 11 12
- # $dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks
-
- @stinf = stat("$DevLockFile");
- $LockModTime = @stinf[9];
-
- @stinf = stat($TmStmpFile);
- $TmStmpModTime = @stinf[9];
-
- printf STDERR "LockTime: %d , TimeStamp: %d\n", $LockModTime, $TmStmpModTime;
- if (($TmStmpModTime - $LockModTime) > $MaxDiff) {
-
- system "$unlockslip";
-
- system "$killslip";
-
- printf STDERR "$DevLockFile not modified for $MaxDiff Seconds\n" ;
- exit(0);
- }
-
- }
-
- #
- ## Main Procedure
- ##
- ##
- #
-
- system "$TouchCmd $TmStmpFile";
-
- &CheckModTime();
-
-
-
-