Faz algum tempo fiz um artigo sobre como instalar a OpenVPN (OpenVPN para acesso remoto (road-warrior)) para acesso remoto e ate entao, eu nao tinha visto nada para estar monitorando minha VPN, onde fosse possivel ter informacoes de quantos usuarios estao conectados em um determinado momento ou ainda quanto trafego passou por ela. Nao estou dizendo o trafego da interface eth0, eth1, e sim o que e transmitido dentro dos tuneis criptografados onde representara realmente o que um usuario utilizou.Pensando neste cenario iniciei uma busca por alternativas, a interface de gerenciamento da OpenVPN nao e muito amigavel e tambem nao ajuda muito para tirar informacoes utilizando algum script. Acabei encontrando que a propria OpenVPN escreve um arquivo seu status atual a cada determinado tempo. Em minha instalacao encontrei este arquivo executando um ps para visualizar os processos e verifiquei o parametro abaixo:--status /var/run/openvpn.openvpn.status 10Isso indica que o arquivo sera escrito no diretorio acima e atualizado a cada 10 segundos. Creio que e tempo suficiente para ter um arquivo que possa refletir o estado atual da nossa VPN! Ele e assim:OpenVPN CLIENT LISTUpdated,Tue Sep 23 14:17:25 2008CN,Real Addr,Bytes Rece,Bytes Sent,Connected Sinceandre,216.106.173.161:1772,24215,26619,Tue Sep 23 13:27:50 2008ROUTING TABLEVirtual Address,Common Name,Real Address,Last Ref10.10.20.2,andre,216.106.173.161:1772,Tue Sep 23 13:27:59 2008GLOBAL STATSMax bcast/mcast queue length,0ENDA linha que nos interessa e a 4 (de cima para baixo) onde estao descritas informacoes sobre os usuarios conectados. Ali e possivel encontrar os bytes enviados/recebidos e podemos tambem saber quantos usuarios estao conectados em um determinado momento, ou seja, temos as informacoes que necessitamos. Minha necessidade era a de disponibilizar esse grafico da maneira mais facil, e como aqui temos uma instalacao do Cacti essa foi a melhor opcao, porem ele nao esta instalado no mesmo servidor da VPN, obviamente, entao eu precisava transmitir esses dados atraves da rede. A topologia neste caso era a seguinte:Pesquisando na internet encontrei uma funcionalidade do agente snmpd onde e possivel executar um Shell Script e retornar essas informacoes em um OID (Object IDentifier ou Identificador de Objeto) reservado para uso privado. Como meu servidor OpenVPN ja possuia este instalado nao foi necessario nenhum software adicional, so era necessario ajustar a configuracao. O arquivo final ficou dessa forma:rocommunity publicsyslocation Brasilsyscontact Andre Zenun extend .1.3.6.1.4.1.2021.50 vpnstats /bin/bash /etc/snmp/openvpn_statistics.shA linha responsavel por fazer a transferencia do resultado do script para o agente e a extend. O OID que esta ali foi utilizado em um exemplo dentro do arquivo de configuracao e sempre deve ser este. Apos o identificador e necessario dar um nome, que no meu caso foi vpnstats um programa a ser executado, /bin/bash, e um parametro para ele /etc/snmp/openvpn_statistics.sh. E muito importante disponibilizar este arquivo em um local onde o usuario do daemon snmp possa executar. No meu caso precisei acrescentar uma entrada no arquivo sudoers para que fosse possivel a execucao do comando egrep. O script utilizado esta disponibilizado neste link. A entrada no arquivo de configuracao /etc/sudoers e muito simples:snmp ALL = NOPASSWD:/bin/egrepMuito bem, temos o script, configuramos o sudoers, acrescentamos a linha no arquivo de configuracao do snmp e reiniciamos nosso agente. Com isso e