#!/usr/bin/perl

 
  # Remember... These Come from Trees
  # This program accepts the IP address or hostname of an HP
  # or compatible printer on the command line and uses HPPJL
  # to set the "Ready Message" to "Remember... These Come From Trees"
  # reminding people not to waste paper.  Please visit:
  #
  #    http://thesecomefromtrees.blogspot.com/
  #
  # for more information.
  #
  #
  # THIS PROGRAM IS PROVIDED WITH NO WARRANTY OF ANY KIND EXPRESSED OR IMPLIED
  # THE AUTHOR CANNOT BE RESPONSIBLE FOR THE EFFECTS OF THIS PROGRAM
  # IF YOU ARE UNCERTAIN ABOUT THE ADVISABILITY OF USING IT, DO NOT!
  #
  # Yaakov (http://kovaya.com/)

use strict;
use warnings;

unless (@ARGV) { print "usage: $0 <ip address> or $0 <hostname>\n" ; exit }

my $target = $ARGV[0];
chomp $target;
my $peeraddr;

if ($target =~ /\w/) {
  my $ip = gethostbyname($target) or die "Can't resolve address: $!";
  $peeraddr = inet_ntoa($ip);
} else {
  $peeraddr = $target
}

use IO::Socket;
my $socket = IO::Socket::INET->new(
    PeerAddr  => $peeraddr,
    PeerPort  => "9100",
    Proto     => "tcp",
    Type      => SOCK_STREAM
    ) or die "Could not create socket: $! (Maybe the address you used is bad?)";

my $data = <<EOJ
\e%-12345X\@PJL JOB
\@PJL RDYMSG DISPLAY="Remember... These Come From Trees"
\@PJL EOJ
\e%-12345X
EOJ
;

print $socket $data;
print "\"Remember... These Come from Trees\" sent to $target";
if ($peeraddr ne $target) {print " ($peeraddr)";}
print "\n";

