home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / sockd.zip / sockdsum.cmd < prev   
OS/2 REXX Batch file  |  1998-07-11  |  8KB  |  272 lines

  1. /**************************************************************************/
  2. /*                                                                        */
  3. /*  sockdrep.cmd :  A sample Rexx program to report sockd activities      */
  4. /*                                                                        */
  5. /*   This program reads the archived sockdlog.XXX files in the current    */
  6. /*  directory and writes the activity report to the screen.               */
  7. /*                                                                        */
  8. /*  Usage : enter "sockdrep" without parameter                            */
  9. /*                                                                        */
  10. /*                                            Philippe Gillain  March 1997*/
  11. /**************************************************************************/
  12.  
  13. '@echo off'
  14. trace off
  15.   call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
  16.   call SysLoadFuncs
  17.  
  18. parse upper arg Parm_field;
  19. if Parm_field = '?' | Parm_field = 'HELP' then do
  20.    call usage
  21.    exit
  22.    end
  23.  
  24.  numeric digits 15
  25.  numeric form  engineering
  26.  numeric fuzz  0
  27.  
  28.   host_nb = 0
  29.  
  30.   dial_up_Nb  = 0
  31.   dial_up_HH  = 0
  32.   dial_up_MM  = 0
  33.   dial_up_start_day  = 0
  34.   dial_up_start_time = " "
  35.   dial_up_end_day    = 0
  36.   dial_up_end_time   = " "
  37.   dial_up_delay      = 0
  38.  
  39.  
  40. /*------------------------------------------------------------------
  41.  * read the parameters
  42.  *------------------------------------------------------------------*/
  43. /*  parse arg file_name line_name line_name2 . */
  44.  
  45. file_name = "sockdlog.001"
  46. start_time = "-"
  47. start_day  = " "
  48. start_month = " "
  49. end_time = " "
  50. end_day  = " "
  51. end_month = " "
  52. cur_hour = 0
  53. i = 0
  54. j = 0
  55. k = 0
  56.  
  57. call SysFileTree 'sockdlog.*', 'filename', 'F'
  58.  
  59. if filename.0 = 0 then call SysFileTree 'sockd.log', 'filename', 'F'
  60.  
  61. do i = 1 to filename.0
  62.   file_name = word(filename.i,5)
  63.   if lines(file_name) > 0 then do
  64.     work_line = linein(file_name)
  65.     if word(work_line,1) = "sockdlog" then do
  66.       if start_time = "-" then do
  67.          start_month = word(work_line,4)
  68.          start_day   = word(work_line,5)
  69.          start_time  = word(work_line,6)
  70.          end
  71.       do while lines(file_name) > 0
  72.         work_line = linein(file_name)
  73.         word1 = word(work_line,1)
  74.         SELECT
  75.           WHEN word1 = "dial-up" THEN call DialUp;
  76.           WHEN word1 = "session" THEN call Session;
  77.           WHEN word1 = "error" THEN call ErrorRep;
  78.           WHEN word1 = "sockdlog" THEN do;
  79.              end_month = word(work_line,4)
  80.              end_day   = word(work_line,5)
  81.              end_time  = word(work_line,6)
  82.              end;
  83.           OTHERWISE
  84.         END
  85.       end
  86.     end
  87.   end
  88. end
  89.  
  90. say 'Report from ' || start_month || " " || start_day || " " || start_time || " to " ,
  91.                    || end_month || " " || end_day || " " || end_time
  92. say ' '
  93. say 'Number of dial-up sessions ' || dial_up_Nb
  94. say 'Total dial-up connection time ' || RIGHT(dial_up_HH,5,' ') || ":" ,
  95.                                      || RIGHT(dial_up_MM,2,'0') || " hours"
  96. say ' '
  97. say ' depress  ENTER to continue '
  98. Pull answer .
  99. call SysCls
  100. say ' '
  101. say ' IP Address     First-Traffic         Last-Traffic         Connections    Bytes'
  102. say ' '
  103.  
  104.   j = 0
  105.   do i = 1 to host_nb
  106.     j = j + 1
  107.     bytes = bytin.i + bytout.i
  108.     say  LEFT(name.i,15) || ' ' || ,
  109.          LEFT(first_traffic,22) || LEFT(last_traffic,22) || " " || ,
  110.          RIGHT(session_nb.i,4,' ') || '   ' || RIGHT(bytes,12,' ')
  111.     if j > 16 then do
  112.        say ' '
  113.        say ' depress  ENTER to continue '
  114.        j = 0
  115.        Pull answer .
  116.        call SysCls
  117.        say ' '
  118.        say ' IP Address    First-Traffic         Last-Traffic         Connections    Bytes'
  119.        say ' '
  120.        end
  121.     end
  122.  
  123. exit
  124.  
  125. DialUp:
  126.  if word(work_line,4) = "established" then do
  127.     dial_up_start_day  = word(work_line,7)
  128.     dial_up_start_time = word(work_line,8)
  129.     dial_up_delay = 0
  130.     end
  131.  else
  132.  if word(work_line,4) = "closed" then do
  133.     dial_up_end_day  = word(work_line,7)
  134.     dial_up_end_time = word(work_line,8)
  135.     end_time = dial_up_end_time
  136.     end_day  = dial_up_end_day
  137.     end_month = word(work_line,6)
  138.     if dial_up_end_day = dial_up_start_day then do
  139.        HH1 = SUBSTR(dial_up_start_time,1,2)
  140.        MM1 = SUBSTR(dial_up_start_time,4,2)
  141.        HH2 = SUBSTR(dial_up_end_time,1,2)
  142.        MM2 = SUBSTR(dial_up_end_time,4,2)
  143.        if MM2 < MM1 then do
  144.          MM2 = MM2 + 60
  145.          HH2 = HH2 -1
  146.          end
  147.        dial_up_Nb  = dial_up_Nb + 1
  148.        dial_up_HH  = dial_up_HH + HH2 - HH1
  149.        dial_up_MM  = dial_up_MM + MM2 - MM1
  150.        if dial_up_MM > 59 then do
  151.           dial_up_HH = dial_up_HH + 1
  152.           dial_up_MM = dial_up_MM - 60
  153.           end
  154.        end
  155.     end
  156.  RETURN
  157.  
  158. Session:
  159.  if substr(word(work_line,2),1,5) = "proxy" then call ProxySess
  160.  else do
  161.   host_name   = word(work_line,9)
  162.   word1   = word(work_line,4) || " " || word(work_line,5) || " " || word(work_line,7) ,
  163.             || " " || word(work_line,6)
  164.   end_time  = word(work_line,6)
  165.   end_day   = word(work_line,5)
  166.   end_month = word(work_line,4)
  167.   word2   = word(work_line,13)
  168.   k = LENGTH(word2)
  169.   if k > 4 then do
  170.      word3 = SUBSTR(word2,5,k)
  171.      l = pos('/',word3)
  172.      m = LENGTH(word3)
  173.      n = l - 1
  174.      word4  = SUBSTR(word3,1,n)
  175.      host_in  = word4
  176.      n = m -l
  177.      l = l + 1
  178.      word4  = SUBSTR(word3,l,n)
  179.      host_out = word4
  180.     end
  181.   else do
  182.     host_in  = 0
  183.     host_out = 0
  184.     end
  185.   not_found = 'Y'
  186.   do k = 1 to host_nb
  187.     if (name.k = host_name) then do
  188.       session_nb.k = session_nb.k + 1
  189.       bytin.k      = bytin.k  + strip(host_in)
  190.       bytout.k     = bytout.k + strip(host_out)
  191.       last_traffic = word1
  192.       not_found = 'N'
  193.       k = host_nb
  194.       end
  195.     end
  196.   if not_found = 'Y' then do
  197.     host_nb = host_nb + 1
  198.     name.host_nb  = host_name
  199.     session_nb.host_nb  = 1
  200.     bytin.host_nb       = strip(host_in)
  201.     bytout.host_nb      = strip(host_out)
  202.     first_traffic = word1
  203.     last_traffic = word1
  204.     end
  205.   end
  206.  RETURN
  207.  
  208. ProxySess:
  209.   host_name   = word(work_line,10)
  210.   word1   = word(work_line,5) || " " || word(work_line,6) || " " || word(work_line,8) ,
  211.             || " " || word(work_line,7)
  212.   end_time  = word(work_line,7)
  213.   end_day   = word(work_line,6)
  214.   end_month = word(work_line,5)
  215.   word2   = word(work_line,14)
  216.   k = LENGTH(word2)
  217.   if k > 4 then do
  218.      word3 = SUBSTR(word2,5,k)
  219.      l = pos('/',word3)
  220.      m = LENGTH(word3)
  221.      n = l - 1
  222.      word4  = SUBSTR(word3,1,n)
  223.      host_in  = word4
  224.      n = m -l
  225.      l = l + 1
  226.      word4  = SUBSTR(word3,l,n)
  227.      host_out = word4
  228.     end
  229.   else do
  230.     host_in  = 0
  231.     host_out = 0
  232.     end
  233.   not_found = 'Y'
  234.   do k = 1 to host_nb
  235.     if (name.k = host_name) then do
  236.       session_nb.k = session_nb.k + 1
  237.       bytin.k      = bytin.k  + strip(host_in)
  238.       bytout.k     = bytout.k + strip(host_out)
  239.       last_traffic = word1
  240.       not_found = 'N'
  241.       k = host_nb
  242.       end
  243.     end
  244.   if not_found = 'Y' then do
  245.     host_nb = host_nb + 1
  246.     name.host_nb  = host_name
  247.     session_nb.host_nb  = 1
  248.     bytin.host_nb       = strip(host_in)
  249.     bytout.host_nb      = strip(host_out)
  250.     first_traffic = word1
  251.     last_traffic = word1
  252.     end
  253.  RETURN
  254.  
  255. ErrorRep:
  256.  if word(work_line,1) = "refused" then do
  257.    say work_line
  258.    end
  259.  RETURN
  260.  
  261. /*------------------------------------------------------------------
  262.  * some simple help
  263.  *------------------------------------------------------------------*/
  264. Usage: procedure
  265.  
  266.    say " "
  267.    say "usage : "
  268.    say "      start sockdsum in the directory containing the sockdlog files "
  269.    say " "
  270.  
  271.    exit
  272.