OVH Community, your new community space.

Script automatico per risolvere "Configurazione errata del vostro server.." per cPane


raffo
22.12.2011, 23.07
Chi usa cPanel e' abituato o comunque esige che tutto sia completamente automatico.
Il lavoro dei sistemisti e' anche automatizzare ogni cosa possibile e oggi mi sono imbattuto in un server cpanel in cui c'erano 50 IP failover configurati in modo sbagliato e ovh inviava ogni tanto la email "Configurazione errata del vostro server.." e dopo un po "Blocco di un IP failover sul vostro server.." bloccando l'ip failover..

Siccome potrebbe succedere a chiunque ho deciso di scrivere uno script che preleva direttamente la lista degli ip failover del server dedicato su ovh e li configura nel server correttamente.

La broadcast, per configurare un ipfailover correttamente deve essere lo stesso ip failover e la netmask 255.255.255.255

Questo script si collega in tramite SOAPI al manager di ovh, preleva una lista di ip failover e genera il file di configurazione sovrascrivendo la vecchia config e riavviando ipaliases.

Ci vogliono due file: list.pl e failover.sh

list.pl
Codice:
#!/usr/bin/perl

use Data::Dumper;
use SOAP::Lite
 on_fault => sub { my($soap, $res) = @_; die ref $res ? $res->faultstring : $soap->transport->status; };

my $soap = SOAP::Lite
 -> uri('https://soapi.ovh.com/manager')
 -> proxy('https://www.ovh.com:1664');

#login
my $result = $soap->call( 'login' => ('xxxx-ovh', 'xxxx', 'it', 0) );
print "login successfull\n";
my $session = $result->result();

#dedicatedFailoverList
my $result = $soap->call( 'dedicatedFailoverList' => ($session, 'ns213381.ovh.net') );
print "dedicatedFailoverList successfull\n";
my $return = $result->result();
print Dumper $return; # your code here ...

#logout
$soap->call( 'logout' => ( $session ) );
print "logout successfull\n";
E failover.sh

Codice:
#!/bin/bash

echo 
echo "Script in Perl e Bash per prelevare IP Failover di un server dedicato OVH"
echo "E configurarli direttamente nel server cPanel in modo corretto"
echo

dir=`pwd`
echo "Effettuare un Backup delle config relative agli ip alias?: [s/n]"
read backup
[ $backup == "s" ] && cp -r /etc/ips ./ips.backup && cp -r /etc/ipaddrpool ./ipaddrpool.backup && echo "Configurazione salvata nella directory $pwd con il suffisso .backup" || echo "Nessun Backup eseguito, niente panico non andra nulla storto.."

perl list.pl | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | awk '{print $0":255.255.255.255:"$0}' | sort -u > ips
perl list.pl | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort -u > ipaddrpool

eth0=`ifconfig eth0 | grep "inet addr" | awk '{print $2""}' | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | awk '{print $0":255.255.255.255:"$0}'`
sed '/$eth0/d' ips
etho=`ifconfig eth0 | grep "inet addr" | awk '{print $2""}' | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'`
sed '/$etho/d' ipaddrpool

echo
echo "Sovrascrivere automaticamente i file di configurazione /etc/ips e /etc/ipaddrpool?: [s/n]"
read risp
[ $risp == "s" ] && cp -r ips ipaddrpool /etc/ && service ipaliases restart && echo "Configurazione copiata e presa in considerazione attuando un riavvio di ipaliases" && exit 0 || echo "Non Copiato, nessun cambiamento nel sistema, sono disponibili comunque i files generati."
Dopo aver cambiato credenziali d'accesso al SOAP di ovh nel file list.pl
Avviate failover.sh
Possibilmente create i due files in una cartella poiche' all'esecuzione del bash lo script creera due o quattro files in piu.

In pratica lo script fa:

  • Chiede di fare un backup dei files
  • Si connette al manager tramite soapi con il vostro login
  • Preleva la lista degli ip failover
  • filtra solo gli indirizzi ip e li adatta nel file di configurazione in modo corretto
  • elimina l'ip principale eth0 perche' non e' un failover
  • chiede di sovrascrivere la config di sistema con quella generata, riavviando ipaliases e quindi attuando le modifiche.


Dubbi o domande, non esitate a contattarmi.
Volevo automatizzare tutto senza farvi modificare il file perl ma non ho avuto tempo, lo rimando in futuro se qualcuno lo usera.

Per eseguire lo script il perl si necessita di soapi, si installa tramite cpan di perl.
cpan -i SOAP::Lite