ircstats.pl
上传用户:shbosideng
上传日期:2013-05-04
资源大小:1555k
文件大小:3k
源码类别:

SNMP编程

开发平台:

C/C++

  1. #!/usr/local/bin/perl5
  2. # client.pl  v1.5 7 Oct 1997 Matthew Ramsey <mjr@blackened.com>
  3. # http://www.blackened.com/ircstats/
  4. # A simple perl script I use to grab client info on IRC Servers.  While
  5. # it was designed for connecting to an IRC Server, it can easily be
  6. # modified to be used for other purposes.
  7. # Special thanks to Chris Behrens and Doug McLaren.
  8. use Socket;
  9. $DEBUG = 0;
  10. if ($ARGV[0]) {
  11.    $irchost = $ARGV[0] ;
  12. } else {
  13.    print STDERR "Usage: $0 <irc server>n" ;
  14.    exit 1 ;
  15. }
  16. #$irchost = "irc-e.primenet.com";
  17. $ircport = "6666";
  18. $nick1 = "alskdjf";
  19. $nick2 = "aselkr";
  20. ($locclients, $totclients, $numserv, $numchan) =
  21.         getinfo($irchost, $ircport);
  22. $time = time();
  23. print "$locclientsn";
  24. print "$locclientsn";
  25. print "$timen";
  26. print "";
  27. exit; # We're done!
  28. sub connect_host
  29. {
  30.         local($ip, $port) = @_;
  31.         ($d1, $d2, $proto) = getprotobyname("tcp");
  32.         ($d1, $d2, $d3, $d4, $rawclient) = gethostbyname(`hostname`);
  33.         ($d1, $d2, $d3, $d4, $rawserver) = gethostbyname($ip);
  34.         $clientaddr = pack("Sna4x8", 2, 0, $rawclient);
  35.         $serveraddr = pack("Sna4x8", 2, $port, $rawserver);
  36.         socket(SOCKET, AF_INET, SOCK_STREAM, $proto) || die "No socket: $!";
  37.         bind(SOCKET, $clientaddr);
  38.         connect(SOCKET, $serveraddr) || die "connect failed: $!";
  39.         select(SOCKET);
  40.         $| = 1;
  41.         select(STDOUT);
  42. }
  43. sub getinfo
  44. {
  45.         local($host, $port) = @_;
  46.         local($lc, $ts, $ns, $nc);
  47.         $lc = "0";
  48.         $ts = "0";
  49.         $ns = "0";
  50.         $nc = "0";
  51.         connect_host($host,  $port);
  52.         print SOCKET "user efnet jskd fksj fkjs fkjsfk jfknnick 
  53. $nick1nlusersn";
  54.         while(<SOCKET>)
  55.         {
  56.                 chomp();
  57.                 @args = split(' ', "$_");
  58.                 if (substr($args[0], 0, 1) eq ":")
  59.                 {
  60.                         if ($args[1] eq "433")
  61.                         {
  62.                                 print SOCKET "nick $nick2nlusersn";
  63.                         }
  64.                         elsif ($args[1] eq "251")
  65.                         {
  66.                                 $tc = $args[5] + $args[8];
  67.                                 $ns = $args[11];
  68.                         }
  69.                         elsif ($args[1] eq "254")
  70.                         {
  71.                                 $nc = $args[3];
  72.                         }
  73.                         elsif ($args[1] eq "255")
  74.                         {
  75.                                 $lc = $args[5];
  76.                                 last;
  77.                         }
  78.                 }
  79.         }
  80.         close(SOCKET);
  81.         return ($lc, $tc, $ns, $nc);
  82. }