home *** CD-ROM | disk | FTP | other *** search
/ Super Net 1 / SUPERNET_1.iso / PC / OTROS / SUN / SLIP / CSN_SLIP.TAR / tools / ageslip next >
Encoding:
Text File  |  1991-07-16  |  1.5 KB  |  74 lines

  1. #!/usr/local/bin/perl 
  2.  
  3. ## Run from cron periodically 
  4. ##
  5. ##  If Slip Device Lock Exists
  6. ##        If file is over 3 hours old
  7. ##            Remove It
  8. ##            Issue A KillSlip
  9. ##
  10. ## Major purpose is to keep from hogging slip line and running up charges
  11. ##
  12. ## It should also do a netstat and monitor packet transmissions, and not
  13. ## kill the connection if some arbitrary threashold is exceeded.
  14. ##
  15. ## This could be tons smarter with minor effort ...coggs
  16. ##
  17.  
  18. $LockPath    = "/usr/spool/locks/LCK..";
  19. $SlipDevice    = "cuab";
  20. $DevLockFile    = "${LockPath}${SlipDevice}";
  21.  
  22. $SlipLock    = "slip";
  23. $SlipLockFile    = "${LockPath}${SlipLock}";
  24. $SlipIf        = "slip0";
  25. $NetstatPipe    = "netstat -r -n | grep $SlipIf | grep default |";
  26.  
  27. $MaxDiff = 60 * 60 * 3;
  28.  
  29. $TouchCmd        = "/usr/bin/touch";
  30. $TmStmpFile     = "${LockPath}ageslip";
  31.  
  32. $unlockslip    = "rm $SlipLockFile";
  33. $killslip    = "/usr/local/bin/killslip";
  34.  
  35.  #
  36. ##
  37. #
  38. sub CheckModTime {
  39.  
  40. #  0     1    2     3      4    5    6     7     8      9      10     11      12
  41. # $dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks
  42.  
  43.     @stinf = stat("$DevLockFile");
  44.     $LockModTime = @stinf[9];
  45.  
  46.     @stinf = stat($TmStmpFile);
  47.     $TmStmpModTime = @stinf[9];
  48.  
  49.     printf STDERR "LockTime: %d , TimeStamp: %d\n", $LockModTime, $TmStmpModTime;
  50.     if (($TmStmpModTime - $LockModTime) > $MaxDiff) {
  51.  
  52.     system "$unlockslip";
  53.  
  54.     system "$killslip";
  55.     
  56.         printf STDERR "$DevLockFile not modified for $MaxDiff Seconds\n" ;
  57.         exit(0);
  58.     }
  59.  
  60. }
  61.  
  62.  #
  63. ## Main Procedure
  64. ##                   
  65. ##
  66. #
  67.  
  68. system "$TouchCmd $TmStmpFile";
  69.  
  70. &CheckModTime();
  71.  
  72.  
  73.  
  74.