Les « BladeCenter 4-Port GB Ethernet Switch Module » sont des switches présents (au nombre de 1 ou 2) dans les Blade Center.
Ils disposent chacun de .. 18 interfaces :
Les 2 switches n’ont aucun mode commun, si ce n’est l’interface de management qui permet une administration out-of-band via le module d’administration du chassis.
Si on veut faire de la haute-disponibilité réseau sur les serveurs lames, il faut au niveau du serveur réaliser un bonding ou teaming des 2 interfaces internes qui sont réliées au fond de panier de chacun des 2 switches.
Par l’interface Web, il est possible de déclencher la sauvegarde TFTP de la configuration du switch.
Afin de réaliser cela automatiquement1 (i.e de façon scriptée), nous avons examiné la séquence HTTP des requetes GET et POST aboutissant à cette sauvegarde : pour cela nous utilisons l’excellent outil HTTPWatch.
Nous arrivons ainsi à réaliser une sauvegarde via curl (en 1 seule ligne) :
--data-ascii "FormSubmit_HiddenCommand=1&ConfigLog_File=1
&UploadConfiguration_IPAddr=10.0.1.99
&UploadConfiguration_FileName=swibm.conf
&FormSubmit_StartUploadCfgFile=++Start++"
--proxy monproxy:3128
http://10.0.1.141/Forms/UploadConfiguration_Set
--output /dev/null
--verbose
On notera que le login « USERID » et le password « PASSW0RD » (avec le chiffre 0) sont les crédentiels par défaut (configuration usine), que « 10.0.1.99″ est le serveur TFTP, que le nom du fichier à sauvegarder est « swibm » que le proxy utilisé est « monrpoxy » (port 3128), que l’adresse IP du switch IBM est « 10.0.1.141″.
Il ne reste donc plus qu’à scripter cette requête HTTP en PERL (et introduire une boucle afin de traiter une liste de switches) :
use LWP::UserAgent;
## A decommenter en mode debug
##use LWP::Debug qw(+);
my $ua = LWP::UserAgent->new;
my $req= HTTP::Request->new;
my $proxy="http://frigo:3128";
my $uri ='/Forms/UploadConfiguration_Set';
my $tftpserver='10.0.160.99';
my $login='USERID';
my $password='PASSW0RD';
## Tableau contenant les @IPs des switches à sauvegarder
my @switches=('10.0.1.141','10.0.1.142');
## A decommenter si un proxy est utilisé
##$ua->proxy('http',$proxy);
$|=1;
foreach $switch (@switches) {
$filename=$switch.'.conf';
$req= HTTP::Request->new(POST => 'http://'.$switch.$uri);
$req->authorization_basic('USERID','PASSW0RD');
$req->content_type('application/x-www-form-urlencoded');
## En une seule ligne : attention pas de retour chariot !!
$req->content('FormSubmit_HiddenCommand=1&ConfigLog_File=1&
UploadConfiguration_IPAddr='.$tftpserver.'&
UploadConfiguration_FileName='.$filename.'
&FormSubmit_StartUploadCfgFile=++Start++');
##my $res = $ua->request($req);
print "Sauvegarde en tftp de $switch \
sur $tftpserver (fichier $filename)...";
$res = $ua->request($req);
## A decommnenter en mode debug
## print $res->as_string;
# Check the outcome of the response
if ($res->code eq "303") {
print "OK\n";
}
else {
print "NOK :";
print $res->code."\n";
}
};
A l’execution on obtient :
Sauvegarde en tftp de 10.0.1.141 sur 10.0.1.99 ...OK
Sauvegarde en tftp de 10.0.1.142 sur 10.0.1.99 ...OK
En conclusion nous pouvons remarquer :
- pour les équipements Cisco, on préfèrera utiliser la MIB propriétaire permettant de fournir ces éléments et de déclencher le téléchargement par des requêtes SNMPset; [back]