home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / sockd.zip / sockdrep.cmd < prev    next >
OS/2 REXX Batch file  |  1998-07-11  |  8KB  |  275 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 ' Destination                    Port   Session Nb    Bytes Sent   Bytes Rcvd'
  102. say ' '
  103.  
  104.   j = 0
  105.   do i = 1 to host_nb
  106.     j = j + 1
  107.     say  LEFT(name.i,30) || ' ' || RIGHT(port.i,5,' ') || '     ' ,
  108.          RIGHT(session_nb.i,6,' ') || '   ' || RIGHT(bytin.i,12,' ') ,
  109.          || ' ' || RIGHT(bytout.i,12,' ')
  110.     if j > 16 then do
  111.        say ' '
  112.        say ' depress  ENTER to continue '
  113.        j = 0
  114.        Pull answer .
  115.        call SysCls
  116.        say ' '
  117.        say ' Destination                    Port   Session Nb    Bytes Sent   Bytes Rcvd'
  118.        say ' '
  119.        end
  120.     end
  121.  
  122. exit
  123.  
  124. DialUp:
  125.  if word(work_line,4) = "established" then do
  126.     dial_up_start_day  = word(work_line,7)
  127.     dial_up_start_time = word(work_line,8)
  128.     dial_up_delay = 0
  129.     end
  130.  else
  131.  if word(work_line,4) = "closed" then do
  132.     dial_up_end_day  = word(work_line,7)
  133.     dial_up_end_time = word(work_line,8)
  134.     end_time = dial_up_end_time
  135.     end_day  = dial_up_end_day
  136.     end_month = word(work_line,6)
  137.     if dial_up_end_day = dial_up_start_day then do
  138.        HH1 = SUBSTR(dial_up_start_time,1,2)
  139.        MM1 = SUBSTR(dial_up_start_time,4,2)
  140.        HH2 = SUBSTR(dial_up_end_time,1,2)
  141.        MM2 = SUBSTR(dial_up_end_time,4,2)
  142.        if MM2 < MM1 then do
  143.          MM2 = MM2 + 60
  144.          HH2 = HH2 -1
  145.          end
  146.        dial_up_Nb  = dial_up_Nb + 1
  147.        dial_up_HH  = dial_up_HH + HH2 - HH1
  148.        dial_up_MM  = dial_up_MM + MM2 - MM1
  149.        if dial_up_MM > 59 then do
  150.           dial_up_HH = dial_up_HH + 1
  151.           dial_up_MM = dial_up_MM - 60
  152.           end
  153.        end
  154.     end
  155.  RETURN
  156.  
  157. Session:
  158.  if substr(word(work_line,2),1,5) = "proxy" then call ProxySess
  159.  else do
  160.   host_name   = word(work_line,11)
  161.   end_time  = word(work_line,6)
  162.   end_day   = word(work_line,5)
  163.   end_month = word(work_line,4)
  164.   word1   = word(work_line,12)
  165.   j = LENGTH(word1)
  166.   if j > 7 then do
  167.     host_port = SUBSTR(word1,7,(j-7))
  168.     end
  169.   else host_port = 0
  170.   word2   = word(work_line,13)
  171.   k = LENGTH(word2)
  172.   if k > 4 then do
  173.      word3 = SUBSTR(word2,5,k)
  174.      l = pos('/',word3)
  175.      m = LENGTH(word3)
  176.      n = l - 1
  177.      word4  = SUBSTR(word3,1,n)
  178.      host_in  = word4
  179.      n = m -l
  180.      l = l + 1
  181.      word4  = SUBSTR(word3,l,n)
  182.      host_out = word4
  183.     end
  184.   else do
  185.     host_in  = 0
  186.     host_out = 0
  187.     end
  188.   not_found = 'Y'
  189.   do k = 1 to host_nb
  190.     if (name.k = host_name) & (port.k = host_port) then do
  191.       session_nb.k = session_nb.k + 1
  192.       bytin.k      = bytin.k  + strip(host_in)
  193.       bytout.k     = bytout.k + strip(host_out)
  194.       not_found = 'N'
  195.       k = host_nb
  196.       end
  197.     end
  198.   if not_found = 'Y' then do
  199.     host_nb = host_nb + 1
  200.     name.host_nb  = host_name
  201.     port.host_nb  = host_port
  202.     session_nb.host_nb  = 1
  203.     bytin.host_nb       = strip(host_in)
  204.     bytout.host_nb      = strip(host_out)
  205.     end
  206.   end
  207.  RETURN
  208.  
  209. ProxySess:
  210.   host_name   = word(work_line,12)
  211.   word1   = word(work_line,13)
  212.   end_time  = word(work_line,7)
  213.   end_day   = word(work_line,6)
  214.   end_month = word(work_line,5)
  215.   j = LENGTH(word1)
  216.   if j > 7 then do
  217.     host_port = SUBSTR(word1,7,(j-7))
  218.     end
  219.   else host_port = 0
  220.   word2   = word(work_line,14)
  221.   k = LENGTH(word2)
  222.   if k > 4 then do
  223.      word3 = SUBSTR(word2,5,k)
  224.      l = pos('/',word3)
  225.      m = LENGTH(word3)
  226.      n = l - 1
  227.      word4  = SUBSTR(word3,1,n)
  228.      host_in  = word4
  229.      n = m -l
  230.      l = l + 1
  231.      word4  = SUBSTR(word3,l,n)
  232.      host_out = word4
  233.     end
  234.   else do
  235.     host_in  = 0
  236.     host_out = 0
  237.     end
  238.   not_found = 'Y'
  239.   do k = 1 to host_nb
  240.     if (name.k = host_name) & (port.k = host_port) then do
  241.       session_nb.k = session_nb.k + 1
  242.       bytin.k      = bytin.k  + strip(host_in)
  243.       bytout.k     = bytout.k + strip(host_out)
  244.       not_found = 'N'
  245.       k = host_nb
  246.       end
  247.     end
  248.   if not_found = 'Y' then do
  249.     host_nb = host_nb + 1
  250.     name.host_nb  = host_name
  251.     port.host_nb  = host_port
  252.     session_nb.host_nb  = 1
  253.     bytin.host_nb       = strip(host_in)
  254.     bytout.host_nb      = strip(host_out)
  255.     end
  256.  RETURN
  257.  
  258. ErrorRep:
  259.  if word(work_line,1) = "refused" then do
  260.    say work_line
  261.    end
  262.  RETURN
  263.  
  264. /*------------------------------------------------------------------
  265.  * some simple help
  266.  *------------------------------------------------------------------*/
  267. Usage: procedure
  268.  
  269.    say " "
  270.    say "usage : "
  271.    say "      start sockrep in the directory containing the sockdlog files "
  272.    say " "
  273.  
  274.    exit
  275.