-
Зараз на сторінці 0 користувачів
Немає користувачів, що переглядають цю сторінку.
-
Схожий контент
-
Від scorphost
Здравствуйте.
Столкнулся с проблемой интеграции биллинга и userside через модуль usm_billing.
Создал чистый ubilling на фре 14, все работает отлично. Userside на debian 12. Все версии софта крайние на сегодняшний день. Это две виртуалки внутри одного проксмокса на hetzner
Завел тестовый тариф, юзера. Radius и dhcp работают без нареканий, все включается и отключается на микроте. Настройки биллинга показывают, что все методы поддерживаются, но в userside попадает только тариф. Абонент уже не попадает
Результат такой:
Start module at 2025-01-07 22:29:42 Error Load Billing Customer Stop module at 2025-01-07 22:29:42
Лог стопорится тут. lock файл остаётся, второй раз (не удалив его) уже не запустить:
2025-01-07 22:29:42 - Load User From Billing 2025-01-07 22:29:42 - {"khkmb13ap1_iriy":{"id":"khkmb13ap1_iriy","login":"khkmb13ap1_iriy","full_name":"tech","flag_corporate":0,"tariff":{"current":[{"id":"Test_d5u3"}]},"account_number":null,"balance":"0","credit":"0","state_id":5,"date_create":"2025-01-07 10:49:05","date_connect":"2025-01-07 10:49:05","date_activity":"","traffic":{"month":{"up":"0","down":"0"}},"discount":0,"address":[{"type":"connect","house_id":"1","apartment":{"id":"1","full_name":"1","number":"1"},"entrance":"1","floor":"1"}],"phone":[{"number":"","flag_main":0},{"number":"xxx","flag_main":1}],"ip_mac":[{"ip":xxx,"mac":"xxx","ip_net":"10.8.0.0\/16"}],"password":"75wg41yr"}} 2025-01-07 22:29:42 - Count: 0 ...часть чувствительной инфы из json я сам затёр, там все данные реальные
Не знаю конкретно, что еще надо выслать для анализа, поэтому всё необходимое скину в следующем посте, чтобы не засорять по сути.
Просто не знаю с какой стороны проблема.
-
Від 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
подякував якщо хто тикне куди дивитись
-
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас