Thread Schnellster öffentlicher Nameserver meines Standortes (20 answers)
Opened by mixxer at 2017-05-17 01:16

mixxer
 2017-05-21 00:01
#186583 #186583
User since
2016-04-01
25 Artikel
BenutzerIn
[default_avatar]
nshunter.pl (3.5kb):
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#!/usr/bin/perl

use strict;
use warnings;
use feature 'say';

use LWP::Simple;
use Data::Dump qw /dump/;

my $tmp_file = './tmp.txt';
my $quick_test_file = './quick.txt';
my $test_clock = 0.15;

my ( $list, $hash, $ax, $bx, $i, $j );

sub delay {
# Programmablauf unterbrechen
# IN: -1---> Zeit in Sekunden (float)
select( undef, undef, undef, shift );
}


sub mydig {
# parst die für nshunter.pl nötigen Werte
# der Ausgabe von dig in ein besser zu parsendes Format
#
# IN:
# -1---> IP-Adresse des DNS-Servers
# -2---> Query
# -3---> Timeout
# -4---> Anzahl Versuche
#
# OUT:
# Zeichenkette: 'DNS-IP;;STATUS;;ANTWORTZEIT[in ms]'

my ( $dns, $query, $timeout, $tries ) = @_;

my $status = 'ERROR';
my $qtime = '---';

my $in = qx[dig \@$dns $query +time=$timeout +tries=$tries];

my @list = split( /\n/, $in );

for ( @list ) {
$status = 'NOCONN' if $_ =~ /;; connection timed out;/;
$status = $1 if $_ =~ /.*status: (.*), .*/;
$qtime = $1 if $_ =~ /^;; Query time: (.*) msec.*/;
}

return "$dns;;$status;;$qtime";
}

say "DNS-SERVERLISTE AKTUALISIEREN...";

for ( qw[ de ch at ] ) {

$ax = 'http://www.ungefiltert-surfen.de/nameserver/'.$_.'.txt';
$bx = get $ax;

die "Konnte $ax nicht laden!" unless defined $bx;

push @$list, split( /\n/, $bx.qq[\n] );
}

# IPv4!
@$list = grep( /.*\..*/, @$list );

# doppelte IP's kicken
%$hash = map { $_, [] } @$list;
@$list = keys( %$hash );



#######
# QUICKTEST FOR ALL SERVERS
###########################

$i = $#$list + 1;
$j = 1;

my @erg;
my $ptr = \@erg;

say "QUICKTEST BEI $i DNS-SERVERN DURCHFÜHREN...";

for ( 1 .. 10 ) {

my $pid = fork;

if ( not $pid ) {

my $_temp;

push @$_temp, mydig( $$list[$_-1], 'www.google.com', 4, 1 );
push @$_temp, mydig( $$list[$_-1], 'www.google.com', 4, 1 );

push @$ptr, @$_temp;

say $_ for @$_temp;

exit;
}

say "Call Server $_";
delay 0.25;
}

for ( 1 .. 10 ) {
wait();
}

say dump @erg;


Macht dies:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
pi@raspberrypi:~/ap/dns $ sudo ./nshunter.pl
DNS-SERVERLISTE AKTUALISIEREN...
QUICKTEST BEI 1642 DNS-SERVERN DURCHFÜHREN...
Call Server 1
194.231.98.149;;NOERROR;;29
194.231.98.149;;NOERROR;;13
Call Server 2
62.167.21.161;;NOERROR;;68
62.167.21.161;;NOERROR;;39
Call Server 3
77.59.232.36;;NOERROR;;64
77.59.232.36;;NOERROR;;43
Call Server 4
217.117.111.1;;NOERROR;;23
217.117.111.1;;NOERROR;;14
Call Server 5
212.41.204.89;;NOERROR;;41
212.41.204.89;;NOERROR;;27
Call Server 6
195.141.114.171;;NOERROR;;11
195.141.114.171;;NOERROR;;11
Call Server 7
213.221.216.238;;NOERROR;;78
213.221.216.238;;NOERROR;;60
Call Server 8
82.149.95.65;;NOERROR;;41
82.149.95.65;;NOERROR;;22
Call Server 9
62.202.17.66;;NOERROR;;63
62.202.17.66;;NOERROR;;36
Call Server 10
212.77.167.138;;NOERROR;;22
212.77.167.138;;NOERROR;;16
()
pi@raspberrypi:~/ap/dns $


@34: () ---> :(

Nu ich frage mich, wie ich die Ergebnisse der forks ohne externe Dateien sammeln kann... Hab da was mit sockets gelesen, aber das kanns doch wohl nicht sein?!

2017-05-17T08:36:35 GwenDragon
Idee:
CPAN:Net::Ping nehmen, ping auf UDP und TCP 53 bei hires-Auflösung und timout auf 1, Ergebnis in eine named-Pipe schreiben.
Alle Prozesse forken oder threaden.

Bitte fragen wie sowas geht, dein Programm hier posten, wenn du nicht weiter kommst; ich kenne deine Programmierkenntnisse und Literatur, die du für Perl zur Verfügung hast, nicht.


... Ja Du schreibst etwas von einem benannten Rohr, aber woher nehmen, wenn nicht stehlen?!

:)
mfg
mixxer

View full thread Schnellster öffentlicher Nameserver meines Standortes