#!/usr/bin/perl use strict; use warnings; # History: # conray - 19.02.2010 : 19:31 UTC - initial version with ping (-p) # betterworld - 19.02.2010 : 19:44 UTC - minor changes # esskar - 19.02.2010 : 20:27 UTC - changes on ping, and dump myself command (-dump) # topeg - 19.02.2010 : 00:02 UTC - addded mirror use FindBin; use Net::Ping; #EierlegendeWollMilchSau.pl my $cmd = lc shift @ARGV; if ($cmd eq '-p' ) #ping { my $ip = shift @ARGV or die "No ip."; my @r = split(/\./, $ip); my $till = shift(@ARGV) || $r[3]; my $until = $till + 1; while ($r[3] < $until ) { $ip = join '.', @r; my $ping = Net::Ping->new('icmp', 1, 64 ); print "$ip " . ($ping->ping($ip) ? 'online' : 'offline') . "\n"; $r[3]++; } } elsif($cmd eq '-dump') { my $path = "$FindBin::Bin/$FindBin::Script"; open(my $myself, "< $path") or die "Unable to open myself ($path): $!"; while(<$myself>) { print $_; } close $myself; } elsif( $cmd eq '-devil' ) { print "So long, and thanks for all the fish.\n"; unlink $0 or die "Will not stop :'-(\n"; } elsif($cmd eq '-mirror') { my $fh=\*STDIN; my $file=shift; open($fh,'<',$file) || die("ERROR open $file ($!)") if($file); chomp($_) && print reverse($_)."\n" while(<$fh>); close($fh); } # elsif(MORE) { } else { print "usage: EierlegendeWollMilchSau.pl \n\n"; print "parameters:\n"; print "\t-p [range]\t\ttrys to ping an ip or an range of ip addresses.\n"; print "\t-dump\t\t\tdumps itself to STDOUT\n"; print "\t-devil\t\t\tDon't try that\n"; print "\t-mirror [file]\t\t mirror file or STDIN\n"; print "\n"; exit 0; } __END__