1 |
dpavlin |
1.1 |
#!/usr/bin/perl |
2 |
|
|
# |
3 |
|
|
# Use try to connect to a FTP server using Net::FTP, login as |
4 |
|
|
# anonymous and issue PWD. |
5 |
|
|
# |
6 |
|
|
# For use with "mon". |
7 |
|
|
# |
8 |
|
|
# Arguments are "-p port -t timeout host [host...]" |
9 |
|
|
# |
10 |
|
|
# 2002-09-02 Dobrica Pavlinusic <dpavlin@rot13.org> |
11 |
|
|
# |
12 |
|
|
|
13 |
|
|
use Getopt::Std; |
14 |
|
|
use Net::FTP; |
15 |
|
|
|
16 |
|
|
getopts ("p:t:"); |
17 |
|
|
$PORT = $opt_p || 21; |
18 |
|
|
$TIMEOUT = $opt_t || 30; |
19 |
|
|
|
20 |
|
|
my %bad; |
21 |
|
|
|
22 |
|
|
foreach my $host (@ARGV) { |
23 |
|
|
|
24 |
|
|
my $result = check_anon_ftp($host); |
25 |
|
|
if ($result) { |
26 |
|
|
$bad{$host} = $result; |
27 |
|
|
} |
28 |
|
|
} |
29 |
|
|
|
30 |
|
|
if (keys %bad == 0) { |
31 |
|
|
exit 0; |
32 |
|
|
} |
33 |
|
|
|
34 |
|
|
print join (" ", sort keys %bad), "\n"; |
35 |
|
|
|
36 |
|
|
foreach my $h (keys %bad) { |
37 |
|
|
print "HOST $h: " . $bad{$h}, "\n"; |
38 |
|
|
} |
39 |
|
|
|
40 |
|
|
exit 1; |
41 |
|
|
|
42 |
|
|
sub check_anon_ftp { |
43 |
|
|
my ($host) = @_; |
44 |
|
|
$ftp = Net::FTP->new($host, Debug => 0, Timeout => $TIMEOUT, Port => $PORT) || return "can't connect to $host:$PORT for $TIMEOUT seconds."; |
45 |
|
|
$ftp->login("anonymous",'mon@kernel.org') || return "$host: can't login as anonymous"; |
46 |
|
|
my $dir = $ftp->pwd || return "$host: can't do PWD"; |
47 |
|
|
$ftp->quit; |
48 |
|
|
return 0; |
49 |
|
|
} |
50 |
|
|
|