Ich habe bei der Arbeit ein kleines Perl-Skript geschrieben, welches prüfen sollte, ob bestimmte Computer in bestimmten Räumen(also IP-Ranges) noch online sind oder schon automatisch ausgestellt wurden. Dieses Skript sendet ein Paket über ping und guckt dann, ob es ein packetloss gibt. Im Grunde wäre das in der Bash besser gewesen, aber so kann man das, wenn man es ein bisschen anpasst, auch unter anderen OS verwenden.
Code
# The string containsPacketLoss is searching for $packetloss = "100% packet loss"; # Init $returnval = ""; print "\nCheck if Computers are online...\n"; # Scan IP-Range for (my $i = 1; $i <=255; $i++) { # c = one package, w = deadline, q = quiet $ipcmd = "ping -c1 -q -w1 169.254.1." . $i; # execute and retreive output $returnval = `$ipcmd`; if (containsPacketLoss() == 0) { # output print "Computer with IP 169.254.1." . $i . "is still online.\n"; # write log file system("echo Computer with IP 169.254.1.". $i . localtime(time) . " ONLINE >> /home/user/log"); } } sub containsPacketLoss(){ # check by RegEx if the string specified above is in the returnvalue # of the ping command if ($returnval =~ m/$packetloss/ ){ return 1; } return 0; }
Download
sowas suche ich schon so lange, allerdings in ich totaler Anfänger beginne erst mit Perl.
deswegen frage ich dich ob es geht das script so zu ändern das es 10 bekannte IP Adressen ab zu fragen statt den ganzen Adressbereich *.1-255 (dauert zu lange)
es gibt noch andere script in Netz aber ich brauche keine Benachrichtigung sondern einfach nur die anzeige „online“
wäre echt Klasse wenn du eine Idee hättest
http://repat.de/2013/08/parallel-ssh-mit-perl/
Guck dir das mal an, vor allem der 2. Codeblock. Wenn du damit nicht zurecht kommst können wir ja privat nochmal reden.
„Online“ heisst hier ja nur dass der Rechner mit einer bestimmten IP Adresse antwortet, nicht dass da auch bestimmte Services laufen.