#!/usr/bin/perl use Getopt::Long 'HelpMessage'; use IO::Socket::INET; use Net::Telnet; use strict; use warnings; my $remote_telnet; my $spot_callsign; my $spot_frequency; my $spotter_callsign; my $line; my $spot_remarks; my $spot; # # Cluster variables refer to the DX spot cluster to which # We connect to slurp spots. # my $cluster_port; my $cluster_host; my $cluster_login; my $cluster_identifier; my $socket; my $size; GetOptions( 'port=s' => \( $cluster_port = '8000' ), 'host=s' => \( $cluster_host = 'hrd.wa9pie.net' ), 'login=s' => \( $cluster_login = 'k5lrk-10' ), 'cluster_identifier=s' => \( $cluster_identifier = 'WA9PIE-2' ), 'help' => sub { HelpMessage(0) }, ) or HelpMessage(1); # auto-flush on socket $| = 1; $remote_telnet = new Net::Telnet ( Timeout => 30, telnetmode => 0, Input_log => "remote_data.log", Port => $cluster_port ); $remote_telnet->open( $cluster_host ); $remote_telnet->waitfor(' /ogin:/i' ); $remote_telnet->print ( $cluster_login ); while ( $line = $remote_telnet -> getline ( Timeout => 999999 ) ) { chomp $line; # # Parse the line: DX de OE3SPR: 28017.0 PY2OT tks qso dr rod 1847Z # if ( $line =~ /DX de\s+(\w+):\s+([0-9.]+)\s+(\w+)\s+(.*)\s+/ ) { # DX de OE3SPR: 28017.0 PY2OT tks qso dr rod 1847Z # print $line . "\n"; #DX de N3FMC: 21300.0 T77LA 59 in PA 2036Z $line =~ /DX de\s+(\w+):\s+([0-9.]+)\s+(\w+)\s+(.*)\s+/; $spotter_callsign = $1; $spot_frequency = $2; $spot_callsign = $3; $spot_remarks = trim ( $4 ); $spot = sprintf "cluster_identifier=%s:spotter_callsign=%s:spot_frequency=%s:spot_callsign=%s:spot_remarks=%s", $cluster_identifier, $spotter_callsign, $spot_frequency, $spot_callsign, $spot_remarks; ######################################################################## $socket = new IO::Socket::INET ( PeerHost => 'localhost', PeerPort => '7777', Proto => 'tcp', ); if($socket) { $size = $socket->send($spot); # print "Sent!\n"; $socket->close(); } ######################################################################## } } sub ltrim { my $s = shift; $s =~ s/^\s*//; return $s }; sub rtrim { my $s = shift; $s =~ s/\s*$//; return $s }; sub trim { my $s = shift; $s =~ s/^\s*|\s*$//g; return $s };