You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
953 B
48 lines
953 B
#!/usr/bin/env perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
use Getopt::Long;
|
|
use IO::Socket;
|
|
|
|
my $host = '127.0.0.1';
|
|
my $port = 10051;
|
|
my $input = '-';
|
|
my $output = '-';
|
|
my $help = 0;
|
|
|
|
my %options =
|
|
(
|
|
'host|h=s' => \$host,
|
|
'port=i' => \$port,
|
|
'input=s' => \$input,
|
|
'output=s' => \$output,
|
|
'help' => \$help
|
|
);
|
|
|
|
GetOptions(%options) or die "Bad command-line arguments\n";
|
|
|
|
do { print "Usage: $0 -h <host> -p <port> -i <file> -o <file>\n"; exit } if $help;
|
|
|
|
my $socket = new IO::Socket::INET(PeerAddr => $host, PeerPort => $port, Proto => 'tcp', Timeout => 1);
|
|
die "Could not connect to $host:$port: $!\n" unless $socket;
|
|
|
|
$socket->autoflush(0);
|
|
|
|
open INPUT, $input;
|
|
my $send = do { local $/; <INPUT> };
|
|
my $length = length $send;
|
|
close INPUT;
|
|
|
|
print $socket "ZBXD\1";
|
|
do { print $socket chr($length % 256); $length /= 256 } for 1..8;
|
|
print $socket $send;
|
|
|
|
$socket->flush();
|
|
|
|
open OUTPUT, "> $output";
|
|
print OUTPUT while <$socket>;
|
|
close OUTPUT;
|
|
|
|
close $socket;
|