Ultimamente mi e’ capitato di dover creare un’utile script in Poweshell per gestire il cambio di Smtp di una linea adsl verso un’altro Smtp appartenente alla linea adsl di Backup
che si attiva se la prima non dovesse essere piu’ raggiungibile.
Questo quindi permette che la posta continui a funzionare inviando e ricevendo email ( appoggiandosi appunto al 2° Smtp di Backup ) .
Lo stesso script ricambia l’ Smtp appena la 1° linea Adsl torna attiva usufruendo qunidi nuovamente dell’ Smtp primario .
Riporto lo script creato in Powershell 2.0 :
Nell’esempio lo script cambia il 1° Smtp “mailbus.fastweb.it” con il 2° Smtp “out.alice.it” in caso non sia raggiungibile l’indirizzo ip : 10.10.10.190
1° Linea : Fastweb Smtp : mailbus.fasteweb.it
2° Linea : Alice Smtp : out.alice.it
Ho poi creato un’ operazione pianificata che ogni 5 minuti attiva lo script ( script.ps1) descritto e
in caso ci sia un cambiamento del smtp viene spedita un’email di avviso a s.rosai@atik.it :
**************** INIZIO **************************************
#Adding Exchange Snap In to execute Exchange CmdLets in this script
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin
#funzione, in caso di cambiamento scrive su log e manda mail
function logg
{
param ($cosa, $smtpserver)
“QUI ARRIVA” + $cosa + ” ” + $smtpserver
$date=Get-date
$msg=$cosa+ ” ” + $date
# Aggiungo append cosi aggiunge l’evento mantenendo lo storico
$msg |out-file “c:scriptslogsmtp.txt” -append
# Invio Email di avvenuto cambiamento SMTP
$emailFrom = “miaemail@dominio.com”
$emailTo = “s.rosai@atik.it”
$subject = “Cambio SMTP su Dominio.com”
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $msg)
}
#Verifico se l’indirizzo 10.10.10.190 e’ raggiungibile
$ping = get-wmiobject -Query “select * from win32_pingstatus where Address=’10.10.10.190″
# Condizioni se il ping risponde
if ($ping.statuscode -eq 0)
{
” L indirizzo risponde in : {0}ms” -f $ping.responsetime
# Se risponde controllo se è Alice
get-sendconnector | Select-Object smarthostsstring | Tee-Object -variable smarthosts
if ( $smarthosts -match “alice”)
{
# se è alice rimetto Mailbus
Set-SendConnector -identity “Windows SBS internet Send MIOSERVER” -smarthosts “mailbus.fastweb.it” -Port 25
logg “è tornata attivo l’IP 10.10.10.190 reimposto mailbus.fastweb.it” : “mailbus.fastweb.it”
}
}
else {
# SE NON Pinga Controlla se è già su alice e se non lo è lo imposta
get-sendconnector | Select-Object smarthostsstring | Tee-Object -variable smarthosts
if ( $smarthosts -match “fastweb”)
{
# se è fastweb lo mette su alice
Set-SendConnector -identity “Windows SBS internet Send MIOSERVER” -smarthosts “out.alice.it” -Port 25
logg “l’IP 10.10.10.190 imposto out.alice.it come SMTP” “out.alice.it”
}
}
************************** FINE ************************************