#Desnvolvido por: Bee Solutions
#Autor: Fernando Almonde
#Data: 16/05/2023 11:00
# Crie o diretório temporário de arquivos
mkdir /var/tmp/zabbix/
chown -R zabbix:zabbix /var/tmp/zabbix/
# Script 1 - Contador #
vim /usr/lib/zabbix/externalscripts/[Link]
#!/bin/bash
#Desnvolvido por: Bee Solutions
#Autor: Fernando Almonde
#Data: 15/05/2023
DATA=$(date "+%d-%m-%Y_%H-%M-%S")
echo "Ultima execucao: $DATA"
IP="$1"
COMMUNITY="$2"
#Lista de ONUs por Slot: [Link].4.1.5875.[Link].1.2
#Lista de ONUs por Porta: [Link].4.1.5875.[Link].1.3
#Lista de ONUs por Status: [Link].4.1.5875.[Link].1.11
# Gerando lista atualizada
snmpwalk -v2c -c "$COMMUNITY" "$IP" iso.[Link].1.5875.[Link].1.2 >
/var/tmp/zabbix/lista_slots_$[Link]
snmpwalk -v2c -c "$COMMUNITY" "$IP" iso.[Link].1.5875.[Link].1.3 >
/var/tmp/zabbix/lista_pons_$[Link]
snmpwalk -v2c -c "$COMMUNITY" "$IP" iso.[Link].1.5875.[Link].1.11 >
/var/tmp/zabbix/lista_status_$[Link]
# Criando listas
lista_slots=$(cat /var/tmp/zabbix/lista_slots_$[Link] | awk -F
'iso.[Link].1.5875.[Link].1.2.' '{print $2}' | awk '{print $1,$4}')
lista_pons=$(cat /var/tmp/zabbix/lista_pons_$[Link] | awk -F
'iso.[Link].1.5875.[Link].1.3.' '{print $2}' | awk '{print $1,$4}')
lista_status=$(cat /var/tmp/zabbix/lista_status_$[Link] | awk -F
'iso.[Link].1.5875.[Link].1.11.' '{print $2}' | awk '{print $1,$4}')
# Criando lista final
echo "" > /var/tmp/zabbix/lista_final_$[Link]
#echo "$lista_slots"
#echo "$lista_pons"
#echo "$lista_status"
# Lendo listas e criando lista unica
while read id slot
do
porta=$(grep "^$id " <<< "$lista_pons" | cut -d " " -f 2)
status=$(grep "^$id " <<< "$lista_status" | cut -d " " -f 2)
echo "$id $slot/$porta $status" >> /var/tmp/zabbix/lista_final_$[Link]
done <<< "$lista_slots"
###################################################################################
######
# Script 2 - Auxiliar #
vim /usr/lib/zabbix/externalscripts/ponfh
#!/bin/bash
#Desnvolvido por: Bee Solutions
#Autor: Fernando Almonde
#Data: 15/05/2023
#Ex 1: ./pon "2/1" "1" "[Link]"
#Ex 2: cat /var/tmp/zabbix/lista_final_192.[Link] | grep -w "2/1" | awk
'{print $3}' | grep -w "1" | wc -l
#Iniciando variaveis
PON=$1
STATUS=$2
IP=$3
#Lista de ONUs por Slot [Link].4.1.5875.[Link].1.2
#Lista de ONUs por porta [Link].4.1.5875.[Link].1.3
#Status (OID Base ONU Status: [Link].4.1.5875.[Link].1.11)
#0: los
#1: online
#2: offline
#3: online sem dados
#4: dyinggasp
cat /var/tmp/zabbix/lista_final_$[Link] | grep -w "$PON" | awk '{print $3}' | grep
-w "$STATUS" | wc -l
# Dê permissão de execução aos scripts
chmod +x /usr/lib/zabbix/externalscripts/[Link]
chmod +x /usr/lib/zabbix/externalscripts/ponfh
# Adicione o crontab depois de criar os scripts (Lembre-se de substituir as
variaveis "OLT-IP" e "OLT-COMMUNITY" pelo IP da sua OLT e pela community SNMP dela)
crontab -e
*/7 * * * * /usr/lib/zabbix/externalscripts/[Link] "OLT-IP" "OLT-COMMUNITY"
> /usr/lib/zabbix/externalscripts/contador_log_10.[Link]