Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8210[/thread]

schneller Ping

Leser: 1


<< >> 6 Einträge, 1 Seite
Gast Gast
 2006-08-01 17:18
#68492 #68492
Hallo,

ich will feststellen welche IP in einem Klasse A Netz erreichbar sind und welche der gefundenen SNMP unterstützen.

Derzeitig habe versuche ich das mit einem einfachen Ping befehl was jahre dauert.

Gibt es eine möglichkeit unter Perl schneller zu pingen? mit Net::Ping ist es nicht möglich oder?
renee
 2006-08-01 17:33
#68493 #68493
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Soweit ich das beurteilen kann, kannst Du das nur mit ping machen. Um das ganze zu beschleunigen, könntest Du das Programm Wiki:forken.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
nepos
 2006-08-01 18:12
#68494 #68494
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wie pingst du denn im Moment? Hast du dich schon mit dem Timeout gespielt? Der Default von 5 Sekunden koennte etwas viel sein. In nem LAN sollte evtl schon 1 Sekunde reichen.
anti
 2006-08-01 23:10
#68495 #68495
User since
2003-11-29
155 Artikel
BenutzerIn
[default_avatar]
Hi,

statt dem TCP-Ping würde ich den SYN-Ping aus dem Paket CPAN:Net::Ping verwenden:
Code: (dl )
1
2
3
4
5
6
7
8
9
    # Like tcp protocol, but with many hosts
$p = Net::Ping->new("syn");
$p->{port_num} = getservbyname("http", "tcp");
foreach $host (@host_array) {
$p->ping($host);
}
while (($host,$rtt,$ip) = $p->ack) {
print "HOST: $host [$ip] ACKed in $rtt seconds.\n";
}

Da nicht auf die ACK-Pakete gewartet wird, ist dieser viel schneller.

Damit du herausbekommst, ob auf einer Komponente SNMP aktiviert ist oder nicht, musst du wenigstens den Timeout (des SNMP-Connects) abwarten (SNMP ist ein verbindungsloses Protokoll). Dadurch können erhebliche Wartezeiten entstehen, eine "superschnelle" Lösung ist so leider so einfach nicht möglich.

Greetz, anti

[edit]evl. wäre auch der fping etwas für dich (ähnlich renees Lösung)[/edit]\n\n

<!--EDIT|anti|1154459922-->
sid burn
 2006-08-02 00:17
#68496 #68496
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Soll die Funktion unbedingt innerhalb eines Programmes ausgeführt werden?

Ansonsten reicht auch "nmap"

Code: (dl )
nmap -sU -p 161 -P0 192.168.1.1-254


Die erreichbarkeit mithilfe von ping überprüfen würde ich nicht unbedingt machen. Wenn du das ganze Netz kennst, und weißt das jeder Host ein ping zuläst ist das okay, ansonsten kann es aber sein das die Super Windows Profis z.B. Zone Alarm und super High-End Security Zeug oder konsorten eingeschaltet haben, und dann einen sehr gefährlichen "ping" Dropen, und damit "anonym" im Internet sind. Der Host ist damit immer noch erreichbar, nur der "ping" Dienst nicht unbedingt. Im Grunde reicht es wenn du z.B. mit nmap etc. direkt auf UDP Port 161 überprüfst. Ping brauchst du nicht unbedingt.

P.S.: Vielleicht ist da etwas Ironie in meinen Post. Aber nur etwas.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
Ronnie
 2006-08-02 00:40
#68497 #68497
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
@sid burn: Ich denke das ist die Referenz-Lösung, auch wenn man dazu sagen muss das keine Reaktion bei UDP als 'positive' Reaktion gezählt wird. Insofern ist -P0 nachteilig, da auch Hosts die dicht sind oder einfach offline sich 'positiv' verhalten. Ich bin nur nie sicher ob man unbekannte Fragesteller direkt auf die entsprechenden Tools hinweisen sollte?!
<< >> 6 Einträge, 1 Seite



View all threads created 2006-08-01 17:18.