Script per aggiornamento ip dinamico FreePBX Asterisk
Dopo l’ultima guida su come Configurare un trunk Asterisk su linea Vodafone, il mio centralino personale funziona benissimo (quasi). Naturalmente c’è sempre qualcosa da sistemare qua e là, e la prima cosa è quella dell’ip statico. Nel mio caso, avendo un ip dinamico, nel momento in cui cambia l’indirizzo (non spesso), le chiamate in ingresso non vengono inoltrate. Pur avendo un external FQDN con dyndns, ed aggiungendolo in FreePBX, purtroppo NON funziona. Quindi la soluzione è riscrivere nella tabella mysql il nuovo ip in maniera automatica. A questo proposito ho rispolverato uno script bash, che può essere modificato in base alle proprie esigenze:
#!/bin/bash
# This program gets the current IP address (as assigned by the ISP) from
# THIS SCRIPT IS STILL CONSIDERED EXPERIMENTAL - USE AT YOUR OWN RISK!!!
user="user"
pass="pw"
check=$(dig +short myip.opendns.com @resolver1.opendns.com) || { echo "Problem getting current IP address"; exit 1; }
if [[ ! $check =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Invalid IP address"; exit 1;
fi
readip=$(mysql asterisk -u $user -p$pass -se 'SELECT val FROM kvstore_Sipsettings where `key` = "externip"') || { echo "Can't read externip from MySQL asterisk database"; exit 1; }
if [ "$check" != "$readip" ]; then
# IP address has changed
# Send email
echo "This is an automated message - please do not reply. It appears that our external IP address has been changed to $check" | mail -s "External IP address may have been changed" you@someaddress.com
# Save new IP address to Asterisk SIP settings
mysql_response=$(mysql asterisk -u $user -p$pass -se 'update kvstore_Sipsettings set val='\"$check\"' where `key`="externip" ')
# Reload Asterisk
/var/lib/asterisk/bin/module_admin reload
fi
se ci sono problemi di formattazione, si può scaricare con:
$ wget https://www.dropbox.com/s/lrvyd83ezu62fb7/checkip.sh?dl=0 -O checkip.sh
le voci importanti da modificare sono: user, pw, ed aggiungere la propria mail eventualmente, per essere avvisati al cambiamento ip. Quindi:
# chmod u+rx checkip.sh
# mv checkip.sh /var/lib/asterisk/agi-bin/
se non presente dig, scaricarlo:
# apt install dnsutils
per testarlo subito eseguire:
# /var/lib/asterisk/agi-bin/./checkip.sh
Adesso è utile programmare un cron job che controlli l’indirizzo ip ad intervalli regolari. Io ho optato per un check ogni ora, anche se il mio ip non cambia così spesso:
# crontab -e
ed incollare qualcosa del genere:
*/60 * * * * /var/lib/asterisk/agi-bin/checkip.sh
adesso il nostro centralino asterisk non avrà più problemi a causa dell’ip dinamico. Testato e funzionante con Asterisk 14 FreePBX 14
Script Bash per aggiornamento ip dinamico FreePBX Asterisk
enjoy 😉