-
Зараз на сторінці 0 користувачів
Немає користувачів, що переглядають цю сторінку.
-
Схожий контент
-
Від legenda vols
Всем привет, заезженная тема но приходиться искать по всем уголкам интернета - А именно OID и как их использовать.
Начнём.
для новичков.
bash
set_olt_oids() {
# Общие для EPON (BDCOM)
if [[ "$1" =~ ^(P3310|P3310B|P3310C|P3608|P3608B|P3316|P3600-16E|P3608-2TE|P3616-2TE|IEP3310)$ ]]; then
OID_GET_MAC="1.3.6.1.4.1.3320.101.10.4.1.1"
OID_VENDOR_ONU="1.3.6.1.4.1.3320.101.10.1.1.1"
OID_MODEL_ONU="1.3.6.1.4.1.3320.101.10.1.1.2"
OID_TEMP_ONU="1.3.6.1.4.1.3320.101.10.5.1.2"
OID_AUNT_ONU_STATUS="SNMPv2-SMI::enterprises.3320.101.10.1.1.26"
OID_UPTIME_ONU="1.3.6.1.4.1.3320.101.10.1.1.80"
OID_DIST="1.3.6.1.4.1.3320.101.10.1.1.27"
OID_IF_MAC10="1.3.6.1.4.1.3320.101.11.1.1.3"
OID_IFindexmac10="1.3.6.1.4.1.3320.101.11.1.1.1"
LASTREG_DATE="1.3.6.1.4.1.3320.101.11.1.1.9"
LASTDEREG_DATE="1.3.6.1.4.1.3320.101.11.1.1.10"
LASTDEREG_REASON="1.3.6.1.4.1.3320.101.11.1.1.11"
OID_ONU_ETH="1.3.6.1.4.1.3320.101.12.1.1.8"
OID_PORT_INDEX="1.3.6.1.4.1.3320.101.107.1.1" # oid возвращает все индексы ПОН портов, работает не везде
OID_GEPORT_COUNT="1.3.6.1.4.1.3320.101.10.1.1.12"
OID_FEPORT_COUNT="1.3.6.1.4.1.3320.101.10.1.1.14"
OID_REBOOT_ONU="1.3.6.1.4.1.3320.101.10.1.1.29" # snmpset -v2c -c RW IP OID.onuIndex i 0 reboot
OID_DEL_ONU="SNMPv2-SMI::enterprises.3320.101.11.1.1.2" #.$portID.$mac10" i 0 #mac decimal onu
fi
# Общие для GPON
if [[ "$1" =~ ^(GP3600-08|GP3600-16B|GP3600-08B)$ ]]; then
ETH_STATUS="1.3.6.1.2.1.2.2.1.8" # статус порта 1 портовая ону
ETH_STATUS4="1.3.6.1.4.1.3320.10.4.1.1.4" # статус портов 4х портовая ону
OID_VENDOR_ONU="1.3.6.1.4.1.3320.10.3.1.1.2"
OID_ADMIN_STATUS="1.3.6.1.4.1.3320.10.4.1.1.3"
OID_DOWN_REASON="1.3.6.1.4.1.3320.10.3.1.1.35"
OID_DIST="1.3.6.1.4.1.3320.10.3.1.1.33"
OID_MODEL_ONU="1.3.6.1.4.1.3320.10.3.1.1.9"
OID_VENDOR_ONU="1.3.6.1.4.1.3320.10.3.1.1.2"
OID_REBOOT_ONU="1.3.6.1.4.1.3320.10.3.2.1.4" #snmpset -v2c -c RW IP OID.onuIndex i 1 reboot
fi
# Уникальные параметры для моделей
case "$1" in
# EPON модели
P3310 | P3310B)
OID_RX_ONU="1.3.6.1.4.1.3320.101.10.5.1.6"
OID_RX_OLT="1.3.6.1.4.1.3320.9.183.1.1.5"
OID_PORT_LIST="1.3.6.1.4.1.3320.101.107.1.1"
;;
IEP3310)
OID_RX_ONU="1.3.6.1.4.1.3320.101.10.5.1.5"
OID_RX_OLT="1.3.6.1.4.1.3320.9.183.1.1.5"
OID_TX_ONU="1.3.6.1.4.1.3320.101.10.5.1.6"
;;
P3608 | P3608B | P3310C | P3316 | P3600-16E | P3608-2TE | P3616-2TE)
OID_RX_ONU="1.3.6.1.4.1.3320.101.10.5.1.5"
OID_RX_OLT="1.3.6.1.4.1.3320.101.108.1.3"
OID_TX_ONU="1.3.6.1.4.1.3320.101.10.5.1.6"
OID_PORT_LIST="1.3.6.1.4.1.3320.101.107.1.1"
;;
# GPON модели
GP3600-08 | GP3600-16B | GP3600-08B | P3600-08E)
OID_RX_ONU="1.3.6.1.4.1.3320.10.3.4.1.2"
OID_RX_OLT="1.3.6.1.4.1.3320.10.2.3.1.3"
OID_TX_ONU="1.3.6.1.4.1.3320.10.3.4.1.3"
OID_GET_MAC="1.3.6.1.4.1.3320.10.3.1.1.4"
;;
*)
echo -e "\e[1;91mНеизвестный режим OLT: $1\e[0m"
return 1
;;
esac
return 0
}
что бы было понятно в дальнейшем что за переменные
snmp1="snmpwalk -v2c -c паблик стринг"
snmp2="snmpwalk -v2c -Ouqv -c паблик стринг"
snmp3="snmpget -v2c -c паблик стринг"
snmp3q="snmpget -v2c -Ouqv -c паблик стринг"
snmp4="snmpget -v2c -Ouqv -c приват стринг"
snmp5="snmpset -v2c -c приват стринг"
EPON GEPON
1- OID_GET_MAC="1.3.6.1.4.1.3320.101.10.4.1.1" на бдкомах епон
= SNMPv2-SMI::enterprises.3320.101.10.4.1.1.96 = Hex-STRING: A0 94 6A 97 CC 50
snmp_response=$($snmp3 "$IP" "$OID_GET_MAC.$1" 2>/dev/null | awk -F'Hex-STRING: ' '{print tolower($2)}' | tr -d ' ')
onu_mac=$(echo "$snmp_response" | sed 's/\(..\)/\1:/g;s/:$//') #Переводим в человеческий вид
mac10=$(echo "$snmp_response" | awk '{ # Переводим в mac10 дада способов есть миллиард.
for (i=1; i<=length; i+=2) {
printf "%d", strtonum("0x" substr($0, i, 2))
if (i + 2 <= length) printf "."
}
print ""
}')
лучший способ сделать функцию для форматирования снмп запросов в зависимости от типов STRING / HEX-STRING / COUNTER32 и тд тп.
ifID=$($snmp1 "$IP" "$OID_IF_MAC10" 2>/dev/null | awk -v mac="$mac10" '$0 ~ mac {split($1, arr, "."); print arr[length(arr)-6]; exit}')
2 - OID_VENDOR_ONU="1.3.6.1.4.1.3320.101.10.1.1.1"
тут без лишних слов возвращает вендор онушек
SNMPv2-SMI::enterprises.3320.101.10.1.1.1.97 = STRING: "XPON" если укажем параметр -Oqv или -Ouqv получим просто "XPON" и надо будет лишь сделать | tr -d ' " ' что бы удалить лапки.
3 - OID_MODEL_ONU="1.3.6.1.4.1.3320.101.10.1.1.2" аналогично вендорам, получаем модель.
4- OID_TEMP_ONU="1.3.6.1.4.1.3320.101.10.5.1.2" - температура ону делим на / 256
SNMPv2-SMI::enterprises.3320.101.10.5.1.2.17 = INTEGER: 7027
temp_onu=$($snmp3q $IP 1.3.6.1.4.1.3320.101.10.5.1.2.$INDEX | awk '{printf "%.2f", $1/265}' 2>/dev/null)
5 - OID_AUNT_ONU_STATUS="1.3.6.1.4.1.3320.101.10.1.1.26"
SNMPv2-SMI::enterprises.3320.101.10.1.1.26.276 = INTEGER: 3
onuAunt_type=$($snmp3q $IP "$OID_AUNT_ONU_STATUS.$INDEX" 2>/dev/null)
case "$onuAunt_type" in
0) onuAunt_type_txt="authenticated" ;;
1) onuAunt_type_txt="registered" ;;
2) onuAunt_type_txt="deregistered" ;;
3) onuAunt_type_txt="auto_config" ;;
4) onuAunt_type_txt="lost" ;;
*) onuAunt_type_txt="unknown" ;;
esac
6 - OID_UPTIME_ONU="1.3.6.1.4.1.3320.101.10.1.1.80" uptime
SNMPv2-SMI::enterprises.3320.101.10.1.1.80.207 = INTEGER: 290907
timetick
| awk '{h=int($1/3600); m=int(($1%3600)/60); s=$1%60; printf "AliveTime: %dч %dмин %dсек\n", h, m, s}')${reset}"
7 - OID_DIST="1.3.6.1.4.1.3320.101.10.1.1.27"
SNMPv2-SMI::enterprises.3320.101.10.1.1.27.149 = INTEGER: 1600
на епоне в метрах на гпоне делим на 10
8 - OID_IF_MAC10="1.3.6.1.4.1.3320.101.11.1.1.3"
SNMPv2-SMI::enterprises.3320.101.11.1.1.3.14.60.21.18.8.130.175 = Hex-STRING: 3C 15 12 08 82 AF
SNMPv2-SMI::enterprises.3320.101.11.1.1.3 .14-PORTINDEX 60.21.18.8.130.175 - MAC10 = Hex-STRING: MAC HEX
9- OID_IFindexmac10="1.3.6.1.4.1.3320.101.11.1.1.1"
SNMPv2-SMI::enterprises.3320.101.11.1.1.1.125.60.21.18.6.227.186 = INTEGER: 125
SNMPv2-SMI::enterprises.3320.101.11.1.1.1.125.60.21.18.6.247.136 = INTEGER: 125
возвращает PORT INDEX и можно грепнуть по mac10 найти индекс и можно грепнуть через мак10
10 - LASTREG_DATE="1.3.6.1.4.1.3320.101.11.1.1.9"
дату отдаёт в хексе. надо декодировать это дело.
вызов snmp + IP + oid + PORTINDEX + MAC10
date_hex=$($snmp1 $IP "$LASTREG_DATE.$IF_INDEX.$mac10" 2>/dev/null | awk -F': ' '{print $2}' | tr -d ' ')
if [[ -n "$date_hex" ]]; then
# Преобразуем дату из hex в числовое представление
data=($(echo "$date_hex" | sed 's/../0x& /g'))
local year=$((data[0] * 256 + data[1]))
local month=${data[2]}
local day=${data[3]}
local hour=${data[4]}
local minute=${data[5]}
local second=${data[6]}
local formatted_date=$(printf "%04d-%02d-%02d %02d:%02d:%02d" "$year" "$month" "$day" "$hour" "$minute" "$second")
10 - LASTDEREG_DATE="1.3.6.1.4.1.3320.101.11.1.1.10"
аналогично 9му оиду.
11 - LASTDEREG_REASON="1.3.6.1.4.1.3320.101.11.1.1.11"
DEREG_STATUS=$($snmp3 $IP "$LASTDEREG_REASON.$IF_INDEX.$mac10" -Oqv 2>/dev/null)
case "$DEREG_STATUS" in
2) dereg_status_text="normal";;
3) dereg_status_text="mpcp-down";;
4) dereg_status_text="oam-down";;
5) dereg_status_text="firmware-download";;
6) dereg_status_text="illegal-mac";;
7) dereg_status_text="llid-admin-down";;
😎 dereg_status_text="wire-down";;
9) dereg_status_text="power-off";;
255) dereg_status_text="unknown";;
0) dereg_status_text="Нет данных.";;
*) dereg_status_text="not found";;
esac
есть прикол если онушка autoconfig статус 3 / authenticated статус 0
там инвертируються 7 и 8 может и от моделей ону зависеть....
7) dereg_status_text="llid-admin-down";;
😎 dereg_status_text="wire-down";;
это уже тестами )
12 - OID_ONU_ETH="1.3.6.1.4.1.3320.101.12.1.1.8" статус езернет ничего не обычного кроме того что может верно отдать данные с 2-3го раза )
2 down 1 up
там же есть прикол с authenticated autoconfig инвертируется...
local PORT_COUNT=$($snmp2 "$IP" "$OID_ONU_ETH.$INDEX" | wc -l)
local ETH_STATUS=$($snmp2 "$IP" "$OID_ONU_ETH.$INDEX.$port" 2>/dev/null)
[[ "$ETH_STATUS" =~ ^[0-9]+$ ]] || continue # Проверяем, что ETH_STATUS - это число
if [[ "$onuAunt_type" == "0" ]]; then
STATUS_COLOR=$( [[ "$ETH_STATUS" -eq 2 ]] && echo "UP" || echo "DOWN" )
else
STATUS_COLOR=$( [[ "$ETH_STATUS" -eq 1 ]] && echo "UP" || echo "DOWN" )
fi
13 - OID_PORT_INDEX="1.3.6.1.4.1.3320.101.107.1.1" # oid возвращает все индексы ПОН портов, работает не везде.
14 - OID_GEPORT_COUNT="1.3.6.1.4.1.3320.101.10.1.1.12" гигабит езернет порты на онушках (кол-во)
15 - OID_FEPORT_COUNT="1.3.6.1.4.1.3320.101.10.1.1.14" ФастЕзернет 100мбит аналогично.
INTEGER
16 - OID_REBOOT_ONU="1.3.6.1.4.1.3320.101.10.1.1.29" # snmpset -v2c -c RW IP OID.onuIndex i 0 reboot REBOOT ONU epon snmp
$snmp5 "$IP" "$OID_REBOOT_ONU.$INDEX" i 0 >/dev/null 2>&1
17 - delete onu epon удалить ону бдком снмп
OID_DEL_ONU="SNMPv2-SMI::enterprises.3320.101.11.1.1.2"
$snmp5 "$IP" "$OID_DEL_ONU.$ifID.$mac10" i 0 > /dev/null 2>&1 oid.PORTINDEX.mac10 i 0
остальные есть выше там думаю всё понятно.
SIGNAL LEVELS в зависимости от моделей плат и олтов расписаны
все везде одинаково
$snmp2 "$IP" "$OID_RX_OLT.$INDEX" 2>/dev/null | awk '{print $NF / 10}') результат делим на 10.
epon пакеты, ошибки по портам на онушке.
broadcasts=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.16.$INDEX.$port" 2>/dev/null)
multicasts=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.17.$INDEX.$port" 2>/dev/null)
unicasts=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.18.$INDEX.$port" 2>/dev/null)
pause=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.19.$INDEX.$port" 2>/dev/null)
fcserrs=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.20.$INDEX.$port" 2>/dev/null )
oversize=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.13.$INDEX.$port" 2>/dev/null)
jabber=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.14.$INDEX.$port" 2>/dev/null)
мне бы такое помогло.. а не искать на тонне форумов и сайтов и неделю тыкая snmpwalk и выясняя что и для чего. остального и в инете полно.
-
Від grapefruit
Доброго вечора, спільното!
Можливо хтось стикався з завданням,коли потрібно на OLT BDCOM GP3600 по oid визначити час розреєстрування ону. В неті нічого знайти не вдалося, через MIB браузер тоже ніц.
Якщо підкажете буде дуже вдячний, або хоч підкажіть де шукати.
Всім гарного вечора)
-
Від olapchuk
Вечір добрий
потрібно підсказка чи це взагалі можливо зробити через snmp в ціско
як влан створити, видалити і переімінувати розібрався через snmp, якщо комусь цікаво тут написано https://www.cisco.com/c/en/us/support/docs/ip/simple-network-management-protocol-snmp/45080-vlans.html, якщо треба приклади скину
але проблема в наступному, в ціско всі знають є таке штука яка interface vlan **id**
тут потрібно саме це створити через snmp і задати пару параментрів, його взагалі можна створити через snmp!?
interface Vlan3**
no shutdown
ip address 192.168.***.***/27
подякував якщо хто тикне куди дивитись
-
Від grapefruit
Можливо хтось має оіди для BDCOM P3310B
LastDeregTime
LastDeregReason
Absenttime
Помітив, що з P3310С не співпадають
-
Від Georgianairlink
нужен OID, чтобы увидеть это с помощью snmp
interface TGigaEthernet0/1 description test switchport trunk vlan-allowed 352,362,365,509,514-515,518,528,565-566,590 switchport trunk vlan-allowed add 720-723,1543-1546,2021,2201,2208,2378,2441 switchport trunk vlan-untagged 1 switchport mode trunk
-
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас