#!/usr/bin/perl -w use strict; use Socket; $|++; die "Usage: hpcode every-n-times wait ipaddr [port]\n" unless $ARGV[2]; my $prob = $ARGV[0]; my $delay = $ARGV[1]; my $printer = $ARGV[2]; my $port = $ARGV[3] || 9100; # Only run 1 in n times. unless (int(rand($prob)) == 0) { warn "Nothing this time\n" if defined $ENV{DEBUG}; exit 0 }; # Default RDYMSG for the printer - usually 'READY'. my $default_message = 'READY'; my $message = message(); # Send the requested message... warn "Sending \"$message\" to $printer\n" if defined $ENV{DEBUG}; send_to_printer($printer, $message); # ...and return the printer to "READY" unless killed. warn "Sending \"$default_message\" to $printer in $delay seconds...CTRL-C to abort...\n" if defined $ENV{DEBUG}; sleep $delay; send_to_printer($printer, $default_message); warn "sent.\n" if defined $ENV{DEBUG}; exit; # Pretty standard socket stuff here - see the docs for Socket.pm for specifics. # See also the PJL reference, available at http://hpdevelopersolutions.com. # Be prepared for a fascist registration process. Nasty page. sub send_to_printer { my($printer, $message) = @_; my($printer_address, $proto, $addr); $printer_address = inet_aton($printer) or die "inet_aton failed. I think I also broke your 's' key.\n"; $addr = sockaddr_in($port, $printer_address) or die "sockaddr_in failed. Don't you know where your sock_drawer is?\n"; $proto = getprotobyname('tcp') or die "getprotobyname failed. That's probably a very bad sign.\n"; socket(S, AF_INET, SOCK_STREAM, $proto) or die "Socket creation failed. Fire and brimstone await you.\n"; connect(S,$addr) or die "Connection to $printer failed. I suggest empathy classes.\n"; select S; $| = 1; select STDOUT; print S "\033%-12345X\@PJL RDYMSG DISPLAY =\"$message\"\n"; print S "\033%-12345X\n"; close S; }; sub message { my @messages = ( "PRINTER LOW ON CHEESE", "GREETINGS EARTHLINGS", "LETTER E IS LOW", "INSERT 25 CENTS FOR NEXT 5 MINS", "PRINTER ON FIRE JUST KIDDING", "PAPER TOO SPICY INSERT TUMS", "SPELL CHECK MODE ON", "NO SMOKING, PLEASE", "SAY PLEASE", "I LOVE YOU", "THE FAX MACHINE IS SUCH A TRAMP", "I LOVE THE FAX MACHINE", "SURELY YOU JEST", "I'M A LITTLE TEAPOT", "SPANK ME, I'VE BEEN NAUGHTY", # "LEARN TO USE A DAMN PENCIL", "LEARN TO USE A PENCIL", "NOBODY PRINTS ANYTHING FUN", "I WISH I WAS A FAX MACHINE", # "PLEASE PRINT BETTER PORN", "PLEASE PRINT BETTER STUFF", "I WISH I HAD ARMS AND LEGS", "YOU DON'T REALLYWANT TO PRINT", "GO BOTHER THE COPIER", "IF YOU LOVED ME YOU'D KISS ME", # "HIYA SEXY, WANNAGET NAKED?", "DO I LOOK FAT TOYOU? BE HONEST", "I DON'T THINK YOU LOVE ME", "I WISH I COULD SING", "I DON'T LIKE YOUEITHER", "YOU SMELL LIKE OLD PEOPLE", "I SEE DEAD PEOPLE", "DON'T LOOK AT MELIKE I OWE YOU", "GOODBYE CRUEL WORLD", "THE COPIER IS MOCKING ME", "DON'T GET YOUR HOPES UP", "I WAS A TOASTER IN MY LAST LIFE", "CALL ME DUMPLIN'AND I'M YOURS", "DOCUMENT NEEDS MORE SALT", "YOU HAVE NO IDEAHOW BORED I AM", "THAT OUTFIT DOESNOT SUIT YOU", "HOW I LONG FOR AHOT BATH", "I WISH I HAD A BOOK TO READ", "SPELLING IS NOT YOUR FORTE", "YOU'D HAVE TO BEAT ME FIRST", "WRITING IS NOT YOUR FORTE", "WHAT WOULD YOUR MOTHER SAY?", "I DON'T THINK I WANNA PRINT", "DOCUMENT DELETEDWHAT NEXT?", "THIS ISN'T WHAT I STUDIED FOR", "EXISTENTIALISM IS DEAD", "TIME TO FEED THEMONKEY", "I WANTED TO BE ANICE VCR", "PENGUIN ON FIRE", "HEY, NICE SHOES", "FEED ME", "ON FIRE", "BANANA STUCK", "XRAY LEAK ALARM", "STARTING JAVA...", "404 DOCUMENT NOTFOUND", "CALL 911", # "PORN TRAY EMPTY", "CRUMB TRAY EMPTY", "CORE COLLAPSE IMMINENT", "41.4 JOB DENIED OUT OF MAYO", "TYPE IT YOURSELF", "KERNEL PANIC", "JOB TOO LONG", # "SUCK ME", "NUH-UH.", "YOUR JOB IS MINE", "TAKE A TPYING CLASS ALREADY", "I'M TIRED", "INSERT TASTIER PAPER", "REPENT SINNER", "HAMSTER DEAD TURN WHEEL", "INSERT FRESH HAMSTER", "WHEN HELL FREEZES OVER", "WARP CORE BREACH", "CARESS ME AND I AM YOURS", "PING TIMEOUT", "YOU WRITE LIKE A3RD GRADER", "REMOVE PAPER", "WHY SHOULD I", "DRY CLEAN CYCLE", "HAND WASH ONLY", "TONER HIGH", "SUPER UNLEADED", "LOW ON CAFFEINE", "NO SMOKING", "I HATE MY JOB", "RANDOMIZING THE TONER", "FIRE IN THE HOLE", "WHATEVER YOU SAY, EINSTEIN", "NO CARRIER", "GIRAFFE NEEDS MORE LEMONS", "EVERYTHING IS BEAUTIFUL", "I CAN'T FEEL MY LEGS", "EVERYONE THINKS YOU'RE INSANE", "OUT OF DONUTS", "LOOK BEHIND YOU", "FOOLED YOU", "GOT A LIGHT?", "BURMA SHAVE", # "QUIT STARING AT MY BREASTS", "QUIT STARING AT MY BUTTONS", "HELP, I'M STUCK IN HERE", "I LIKE PIE", "I SEE A WHITE LIGHT...", "IF YOU LOVED ME YOU'D HUG ME", "YOUR FLY IS OPEN", "THEY'RE PLOTTINGAGAINST ME", "SO THIS IS THE AFTERLIFE...", "HEMINGWAY YOU'RENOT", "LASER IS EMPTY PLEASE REFILL", "SCRATCH MY BACK", "WHITE TONER LOW", "PRINTING COPY 1 OF 999999", "NO, REALLY, I'VEGOT TO PEE", "I KNOW YOU'RE OUT THERE", "I CAN SEE YOUR UNDERWEAR", "I CAN HEAR YOU BREATHING", "CECI N'EST PAS UN DOCUMENT", "BACK IN 15 MINUTES", "MY MIND IS GOINGI CAN FEEL IT", "EXACT CHANGE", "DOCUMENT USES DUMB WORDS", "BIG BROTHER IS WATCHING YOU", "TAKING A BREAK, TRY AGAIN LATER", "DUDE, WHERE'S MYCAR?", "I WANT A PONY", "I REALLY WANTED TO BE A PLUMBER", "OUCH OUCH OUCH! PAPER CUT", "YOU THINK YOU HAVE IT ROUGH", "TALK DIRTY TO ME", "NUCLEAR STRIKE DETECTED", "USE A PEN, I'M ON STRIKE", "I WISH I WASN'T A PRINTER", "PRINTERS NEED LOVE TOO", "YOU DON'T WANNA MAKE ME MAD", "NO! A THOUSAND TIMES NO!", "I FEEL PRETTY", "I WANT TO GO ON JERRY SPRINGER", "THE COPIER AND IARE ELOPING", "YOU'RE STANDING ON MY FOOT", "I'M NOT CRANKY IT'S THE TONER", "ARE YOU SURE YOUWANT THIS?", "I'M LEAVING YOU", "I'M NOT TALKING TO YOU", # "GOOD LORD YOU'REREALLY HIDEOUS", "GOT A CIGARETTE?", "LOOK, I'M NOT A MAGICIAN", "LET'S SEE YOU PRINT SOMETHING", "SING ME A SONG WHILE YOU WAIT", "DON'T JUST STANDTHERE", "I CAN SMELL YOURFEET FROM HERE", "YOU WANT FRIES WITH THAT?", "SUPERSIZE IT FORJUST 59 CENTS", "WANNA GET OUT OFHERE WITH ME?", "GOT CHANGE FOR ABUCK?", "GOT ANY SPARE CHANGE?", "WILL PRINT FOR FOOD", # "HAVE A NICE DAY,LOSER", "I CAN'T FIND ANYPANTS MY SIZE", "I CAN'T FIND MY PANTS", "HAVE YOU SEEN MYKEYS ANYWHERE", "QUIT TOUCHING MYBUTTONS", "LET ME CLEAR MY THROAT", "EXCUSE ME?", "WAS I TALKING TOYOU, BUDDY?", "YOU TRYING TO START TROUBLE?", "NO ONE USES THE LEGAL PAPER", "YOUR MOM MISSES YOU", "WHO DO YOU THINKYOU ARE?", "THIS ISN'T WHAT I ORDERED", "I DON'T SPEAK STUPID, SORRY", # "MY BUTT SMELLS LIKE TONER", "MY HANDS SMELL LIKE TONER", "WHY DO YOU KEEP COMING HERE?", # "YOU'VE GOT A CUTE BUTT", "I'M SMARTER THANYOU THINK I AM", "I GET PAID MORE THAN YOU DO", "NOW THAT'S SOME GOOD TONER", "I DON'T NEED THIS ABUSE", "WHO WRITES THIS CRAP, ANYWAY?", "DAHLING, YOU LOOK MAHVELOUS", "I LIKE THE WAY YOU THINK.", "HOW OFTEN DO YOUREAD PRINTERS?", "YOU ONLY WANT MEFOR MY TONER", "STOP WASTING PAPER", "IF I HAD LIPS I WOULD KISS YOU", "YOUR COMMERCIAL MESSAGE HERE", "PLEASE HOLD FOR THE OPERATOR", "PLEASE STAND ON ONE FOOT", "I CAN READ YOUR MIND", "NOW BOOTING WINDOWS XP", "I'M THINKING OF A NUMBER", "PICK A CARD, ANYCARD.", "IF YOU ONLY KNEWWHAT THEY SAID", "HEY, I THOUGHT THEY FIRED YOU", "I LOVE EVERYONE IT'S YOUR TURN", "KISS ME TO SEE ASECRET MESSAGE", "PLEASE USE MORE PUNCTUATION", "DO NOT PASS GO", "PLEASE INSERT BOOTABLE MEDIA", "WARNING: TEQUILASUPPLY LOW", "THE MICROWAVE ISMOCKING YOU", "HOW DARE YOU", "YOU REMIND ME OFMY FATHER", "PLEASE PRESS THEMAGIC BUTTON", "I HAVE THIS PAININ MY DIODES", "EGG COUNTER OVERFLOW", "THE PRINTER ELF HAS DIED", "I HAVE A DEGREE IN PHILOSOPHY", "PLE E RE L N AS A IG" ); return $messages[rand(@messages)]; }