Una vez mas amigos virtuales les traigo un poco de pelotudeces cuando estoy aburrido conocimiento que queria compartir con ustedes.
Hoy les voy a mostrar como configurar automaticamente los telefonos IP de la marca Grandstream, en mi caso en la oficina ya hay aproximadamente 60 internos y es medio engorroso el mantenimiento. Con esta herramienta literalmente es una PAVADA hacerlo. La configuracion se maneja desde un servidor centralizado y los telefonos se actualizan automaticamente cada vez que se bootean .
Elementos necesarios
*1 servidor dhcp como la gente
*1 servidor tftp
*1 o mas telefonos Grandstream
*1 servidor de telefonia ip (asterisk, elastix, etc etc etc).
*jdk instalada en el server que contenga los scripts (preferentemente /usr/local/java )
Como funciona?
Primero se configura el dhcp que tengamos en nuestra red, agregar la opcion 66 con la ip del servidor tftp que tengamos en nuestra lan. Esta opcion es particular en cada dhcp, por ejemplo yo uso pfsense y desde la gui se configura.
Al hacer esto, los telefonos al bootear van a buscar un archivo llamado cfgXXXXXXXXXXXX (donde XXXXXXXXX es el numero de macaddress del telefono).
Lo que basicamente debemos hacer es provisionar de esos archivos a cada telefono. Para esto Grandstream ofrece una herramienta de configuracion para generar los archivos (http://www.grandstream.com/index.php/support/tools), pero es una cagada un poco limitada a la hora de generar muchas configuraciones a la vez.
Gracias a mi amigo personal y python estrella Enrique, se resolvio mediante un script en python y un archivo csv, que es donde van las variables a configurar. En otro archivo llamado cfgMAC es donde se configuran los datos estaticos de configuracion, como se muestra a continuacion:
#-----------------------------------------------------------------------------# You must change this section for your phone# Compatible with Grandstream GXP and GXV series phones#-----------------------------------------------------------------------------# Admin password for web interfaceP2 = phoneadmin1# SIP ServerP47 = asterisk.ejant.edu# Outbound ProxyP48 = asteriskejant.edu# SIP User IDP35 = $EXT# Authentication IDP36 = $USER# Authentication passwordP34 = $SECRET# NAT Traversal. 0 - yes, 1 - noP52 = 0# STUN serverP76 =#-----------------------------------------------------------------------------# Network settings#-----------------------------------------------------------------------------# DHCP support. 0 - yes, 1 - noP8 = 1# PPPoE support. PPPoE user IDP82 =# PPPoE passwordP83 =# IP Address. Ignore if DHCP or PPPoE is usedP9 = 192P10 = 168P11 = 11P12 = $IP# Subnet mask. Ignore if DHCP or PPPoE is usedP13 = 255P14 = 255P15 = 248P16 = 0# Router. Ignore if DHCP or PPPoE is usedP17 = 192P18 = 168P19 = 10P20 = 1# DNS 1. Ignore if DHCP or PPPoE is usedP21 = 192P22 = 168P23 = 10P24 = 12# DNS 2. Ignore if DHCP or PPPoE is used# IP Address. Ignore if DHCP or PPPoE is usedP9 = 192P10 = 168P11 = 11P12 = 4# Subnet mask. Ignore if DHCP or PPPoE is usedP13 = 255P14 = 255P15 = 248P16 = 0# Router. Ignore if DHCP or PPPoE is usedP17 = 192P18 = 168P19 = 10P20 = 1# DNS 1. Ignore if DHCP or PPPoE is usedP21 = 192P22 = 168P23 = 10P24 = 12# DNS 2. Ignore if DHCP or PPPoE is usedP25 = 192P26 = 168P27 = 10P28 = 3# Firmware Upgrade Via. 0 - TFTP Upgrade, 1 - HTTP Upgrade, 2 - HTTPS UpgradeP212 = 0# Firmware Server PathP192 = tftp.ejant.edu# Config Server PathP237 = tftp.ejant.edu# Use Random Port. 0 - no, 1 - yesP78 = 0# Local SIP port (default 5060)P40 = 5060# Local RTP port (1024-65535, default 5004)P39 = 5004
Basicamente el script completa las variables que faltan ($IP, $EXT,$NAME,$USER,$SECRET) con los datos que tiene el archivo config.csv:
Por cada interno agregar una linea.MAC,IP,EXT,USER,SECRET,NAME000b821caaa8,16,601,601,5454,Demo User000b821caab8,17,602,602,5454,Demo User
La aplicacion la bajan de este link
Descomprimir en /opt
cd grandstream
y ahi van a encontrar los siguientes archivos:
*cfgMAC (es el archivo main de configuracion)
*config.csv (tiene los datos variables)
*config_generator.py
*configs (carpeta donde se genera los archivos de config)
*configs_bin (carpeta donde se encriptan los archivos para subir)
*generador.sh (binario para ejecutar)
Nota: el archivo generador.sh copia los archivos generados en /tftpboot en caso de necesitar que se copie en otro lado
una vez hecho el config.csv, seteados los parametros en el archivo cfgMAC... ejecutar generador.sh
si vamos al directorio /tftpboot veremos los archivos creados[root@joshua grandstream]# ./generador.shgenerando archivos.... aguardecopiando archivos generados al directorio /tftpbootlisto!
-rw-r--r-- 1 root root 688 Sep 9 12:25 cfg000b825b8c46
-rw-r--r-- 1 root root 704 Sep 9 12:25 cfg000b825b8c43
y si todo sale bien....
in.tftpd[18523]: RRQ from 192.168.11.61 filename cfg000b825b8c46
Listo, el telefono toma la config automaticamente se reinicia y se configura solo.
Espero que les sirva, y no se olviden, compartir es amor (L)(L)(L)