J'ai un immense et précieux besoin d'aide sur la problématique suivante :
Au démarrage d'une machine IPCop (il y en aura beaucoup), je souhaite me connecter à un site web afin "d'enregistrer" la plateforme. Cette connexion ne transmet aucune donnée. Elle se connecte simplement à un script PHP qui s'occupera de récupérer les informations utiles et les stockera dans une base de données.
Je me débrouille en PHP, mais pas en PERL.

[EDIT]
A priori sur la zone RED, c'est la même chose... snif...
[/EDIT]
Les machines sont connectées de la façon suivante :
iMac <--RJ45 croisé--> IPCop1 <--HUB--> IPCop2 <--RJ45 croisé--> PC XP
|
Serveur Web
J'ai essayé aussi :
iMac <--RJ45 croisé--> IPCop1 <--RJ45 croisé--> IPCop2 <--HUB--> PC XP
|
Serveur Web
Bien évidemment, lorsque j'essaye mon script dans le second environnement, je le teste uniquement sur IPCop2.
Voici mon script en l'état :
- Code: Tout sélectionner
#################################
#!/usr/bin/perl
use IO::Socket;
use strict;
# enable only the following on debugging purpose
use warnings;
require '/var/ipcop/general-functions.pl';
require "${General::swroot}/lang.pl";
require "${General::swroot}/header.pl";
#workaround to suppress a warning when a variable is used only once
my $errormessage='';
sub downloadlist {
unless (-e "${General::swroot}/red/active") {
$errormessage = 'Impossible de se connecter';
}
my %proxysettings=();
&General::readhash("${General::swroot}/proxy/settings", \%proxysettings);
my $peer = '128.0.1.200';
my $peerport = 88;
if ($_=$proxysettings{'UPSTREAM_PROXY'}) {
($peer, $peerport) = (/^(?:[a-zA-Z ]+\:\/\/)?(?:[A-Za-z0-9\_\.\-]*?(?:\:[A-Za-z0-9\_\.\-]*?)?\@)?([a-zA-Z0-9\.\_\
-]*?)(?:\:([0-9]{1,5}))?(?:\/.*?)?$/);
}
my $sock='';
unless($sock = new IO::Socket::INET (PeerAddr => $peer, PeerPort => $peerport, Proto => 'tcp', Timeout => 5))
{
$errormessage = '128.0.1.200:88 inaccessible';
return 'ARG!!!';
}
my $GET_CMD='';
$GET_CMD = "GET http://128.0.1.200:88/ipcop/record.php HTTP/1.1\r\n";
$GET_CMD .= "Host: 128.0.1.200:88\r\n";
$GET_CMD .= "Cache-Control: no-cache\r\n";
$GET_CMD .= "Connection: close\r\n\r\n";
print $sock "$GET_CMD";
my $ret = '';
while (<$sock>) {
$ret .= $_; }
close($sock);
return $ret;
}
my $test = '';
$test = &downloadlist();
print $test;
#####################################
J'ai le code retour "ARG!!!" à chaque fois... snif...
J'arrive bien à faire un PING sur le serveur web, mais pas de traceroute... est-ce normal ?
Merci de me faire part de vos expérience en la matière (si qqun a déjà testé biensur)...
Fabrice