Fertiges Programm für Bintecrouter

Hallo,

nun ist das Progrämmchen fertig.
Vielleicht hat einer Lust den Code etwas zu optimiern, weil es noch nicht zügig läuft.
Eigentlich wollte ich die Abfrage per SNMP machen, aber irgendwie kriege ich den Knoten nicht aus mein Gehirn.
Anfänger Achtung: Die Zeilenumbrüche sind nicht von mir.

Perlversion:

This is perl, v5.8.0 built for MSWin32-x86-multi-thread
(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2002, Larry Wall

Binary build 802 provided by ActiveState Corp. http://www.ActiveState.com
Built 00:54:02 Nov 8 2002

#!/usr/local/bin/perl -w

Mein Dank für bisherige Unterstützung geht an:

Alexander Fleischer aus www.wer-weiss-was

Bernhard Brosda aus www.wer-weiss-was

Vorläufiger Abschluss der Programmidee.

Situation:

Keine ISDN-Karte, sondern ein Bintecrouter

1. Aktivierung des Routers durch einen Ping

2. Stelle die neue IP fest, die vom ISP kommt.

3. Packe die Info in eine HTML-Seite und versende

diese autom. per FTP

4. Falls der Router Offline geht (ISP schalten

nach einiger Zeit (aber min. einmal pro Tag)

die Verbindung ab.

Das merkt dieses Prog. und geht wieder Online.

Zusatz: zähle die Hackversuche.

Viel Spass.

Für praktische Tipps Danke ich schon jetzt.

[email protected]

#FTP über Port 20

use warnings;
use strict;

use IO::Socket;
use Net::stuck_out_tongue:ing;
use Net::FTP;

my @abc;
my $STUNDE;
my $MINUTE;

my $hacker = 0;
my $IPADRESSE = 0;
my $server = „xxx.xxx.xxx.xxx“;
my $username = „yyyyyyyyyyyyy“;
my $password = „vvvvv“;
my $ftp;
my $datei = ‚d:/link.html‘;
my $ping = Net::stuck_out_tongue:ing->new(„icmp“);
$ping->ping(„200.200.200.200“,1);
$ping->close();

my $sock = IO::Socket::INET->new(LocalPort => ‚514‘, Proto => ‚udp‘) or die „socket: $@“;
while($sock->recv(my $message, ‚200‘))
{
if($message =~ /address is/)
{
$message =~/(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}),/;
$IPADRESSE = $1;
@abc = localtime;
$MINUTE = $abc[1];
$STUNDE = $abc[2];

open(HTML_IP, ‚> d:/link.html‘);
print HTML_IP 'Letzte Aktualisierung : ‚;
print HTML_IP „$STUNDE“;
print HTML_IP „:“;
print HTML_IP „$MINUTE“;
print HTML_IP ’
Goto‘;
print HTML_IP „$IPADRESSE“;
print HTML_IP " Hackversuche: $hacker";
print HTML_IP ‚‘;
close(HTML_IP);

$ftp = Net::FTP->new($server, Debug=>0) || die „Keine Verbindung mit $server.\n“;
$ftp->login($username, $password) || die „Fehler beim einloggen.\n“;
$ftp->put($datei) || die „Fehler beim uploaden von $datei auf $server.\n“;
$ftp->quit() || die „Fehler beim ausloggen von $server.\n\n“;
}

if(($message =~ /connection closed/) or ($message =~ /link up/))
{
$ping = Net::stuck_out_tongue:ing->new(„icmp“);
$ping->ping(„200.200.200.200“,1);
$ping->close();
}

if($message =~ /refuse/)
{
$hacker = ++$hacker;
}

print „\n$message“;

}

Hi Ralf,
hier noch ein paar Anmerkungen…

> #!/usr/local/bin/perl -w  
>   
> # Mein Dank für bisherige Unterstützung geht an:  
> # Alexander Fleischer aus www.wer-weiss-was  
> # Bernhard Brosda aus www.wer-weiss-was


never mind :smile:))



> my @abc;  
> my $STUNDE;  
> my $MINUTE;


--\> könnte man leicht einfacher und klarer machen 
my ($STUNDE, $MINUTE) = (localtime)[2,1];

...


$message =~/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}),/o;
--\> Modifier /o am Regex sorgt dafuer, daß der Regex
 nur einmal kompiliert wird (spart auch etwas Zeit)

...

--\> nur ein Print (kombinert mir 'HERE-Script') macht die Sache 
 wesentlich uebersichtlicher:

print HTML\_IP 

Letzte Aktualisierung : $STUNDE:blush:MINUTE