Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl -w
- $|++;
- use strict;
- use IO::Socket::INET;
- my $server_addr = "10.1.1.55"; # tu adres hosta na ktorym pracuje aplikacja UPS Monitor Server
- my $local_addr = "10.1.1.1"; # tu nasz adres
- printf "Analizator protokolu monitora UPS'ow Fideltronik ;) v0.1\n";
- printf "Adres aplikacji UPS Monitor Server: %s\n\n",$server_addr;
- printf "Zaczynam wymiane danych...\n";
- my $unpacked_dgram;
- my $status_byte;
- my $channel = IO::Socket::INET->new(Proto=>"udp",
- LocalPort=>8882,
- PeerPort=>8881,
- LocalAddr=>$local_addr,
- PeerAddr=>$server_addr)
- or die "Can't make UDP socket: $@";
- my($datagram,$flags);
- $channel->send("\01\00\01\00");
- $channel->recv($datagram,256,$flags);
- print "Pakiet z ", $channel->peerhost,", flagi: ",$flags || "brak","\n";
- $unpacked_dgram = unpack('H*',$datagram);
- printf "[%s]\n",$unpacked_dgram;
- printf "\n";
- sleep(2);
- $channel->send("\02\00\02\00");
- $channel->recv($datagram,256,$flags);
- print "Pakiet z ", $channel->peerhost,", flagi: ",$flags || "brak","\n";
- $unpacked_dgram = unpack('H*',$datagram);
- printf "[%s]\n",$unpacked_dgram;
- printf "\n";
- sleep(2);
- printf "\nZaczynam monitoring UPS'a...\n";
- while(1)
- {
- $channel->send("\03\00\03\00");
- $channel->recv($datagram,256,$flags);
- print "Pakiet z ", $channel->peerhost,", flagi: ",$flags || "brak","\n";
- $unpacked_dgram = unpack('H*',$datagram);
- printf "[%s]\n",$unpacked_dgram;
- $status_byte = substr($unpacked_dgram,30,2);
- if($status_byte eq '00')
- { printf "(Zasilanie OK)\n"; }
- elsif($status_byte eq '01')
- { printf "(Praca na bateriach!)\n"; }
- elsif($status_byte eq '02')
- { printf "(Baterie rozladowane!)\n"; }
- elsif($status_byte eq '03')
- { printf "(Zamkniecie systemu!)\n"; }
- elsif($status_byte eq '04')
- { printf "(Brak komunikacji z UPS'em!)\n"; }
- else
- { printf "(Nieznany bajt statusu: %s)\n",$status_byte; }
- sleep(2);
- printf "\n";
- }
Add Comment
Please, Sign In to add comment