getsquidstats
上传用户:shbosideng
上传日期:2013-05-04
资源大小:1555k
文件大小:1k
源码类别:

SNMP编程

开发平台:

C/C++

  1. #!/usr/bin/perl
  2. #######################################################
  3. # Get Web stats from Squid version 1.1.1 or higher
  4. #######################################################
  5. # Author: Anthony Rumble <anthony@rumble.waratah.id.au>
  6. #
  7. # Revision: $Revision: 1.1.1.1 $
  8. #######################################################
  9. use strict;
  10. use Socket;
  11. my ($request) = "cache_object://localhost/stats/utilization HTTP/1.0n";# Request
  12. my ($host) = "localhost"; # Host
  13. my ($p) = 8080; # Port number
  14. my ($j, $good, $junk, $sin, $port, $iaddr, $paddr, $proto, $line, $uptime, $bytes);
  15. $proto = getprotobyname('tcp');
  16. if (!$proto)
  17. {
  18. die("getsockbyname");
  19. }
  20. socket(S, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
  21. $port = shift || $p;
  22. $iaddr = gethostbyname($host);
  23. if (!$iaddr)
  24. {
  25. die("gethostbyname");
  26. }
  27. $sin = sockaddr_in($port, $iaddr);
  28. if (!$sin)
  29. {
  30. die("sockaddr_in");
  31. }
  32. connect(S, $sin) || die "connect: $!";
  33. select(S); 
  34. $| = 1; 
  35. select(STDOUT);
  36. print S "GET $requestn";
  37. while (<S>) 
  38. {
  39. ($junk, $b, $junk, $junk, $junk, $junk, $junk, $junk, $junk, $j)  = split(' ');
  40. if ($b eq "TOTAL")
  41. {
  42. ($good) = split('}', $j);
  43. printf ("0n%un1nsquidn", $good*1000);
  44. exit(0);
  45. }
  46. }
  47. close(S);