use strict;
use Socket;
use Getopt::Long;

my ($port, $proto, $iaddr, $paddr);
my $host; # = 'localhost';

my ($cmd);

for(my $i = 0 ; $i < @ARGV ; $i++) {
	if($ARGV[$i] =~ /^-cmd=(.*)$/i) {
		$cmd = $1;
	}
	else {
		$host = $ARGV[$i];
	}
}

usage() if($host eq '');

$port = 7797;
$proto = getprotobyname('tcp');
$iaddr = inet_aton($host);
$paddr = sockaddr_in($port, $iaddr);

socket(SOCK, PF_INET, SOCK_STREAM, $proto) or die "socket: $!";
connect(SOCK, $paddr) or die "connect: $!";

my @result;
select SOCK; $| = 1; select STDOUT; #バッファに入れず、そのまま出力にまわす

print "CMD: $cmd\n";
print SOCK "$cmd\n" if $cmd;

@result = <SOCK>;
print @result;
close SOCK;

exit;

sub usage {
	print STDERR "usage: $0 -cmd=\"ps auxc\" host\n";
	exit 1;
}