После подключения устройства слушатель получает сообщение о ловушке, запрос отправляется на переключатель, который отправил ловушку, чтобы получить информацию о порте и устройстве, которое инициировало первоначальное сообщение ловушки. Возвращенные значения больше не то, что ожидается. Ранее эти действия выполнялись в рамках .NET Framework 4.7 до обновления до .NET 8 и обновления NUGET для SHARPSNMP < /p>
Вот функция, используемая для получения информации о порте. В этом случае я призываю операцию snmpoperation.getportinfo :
private ISnmpMessage SNMP_Operation(IPEndPoint iPEndPoint, SnmpOperation operation, string port = "", List Mac_address = null)
{
// Create discovery
var discovery = Messenger.GetNextDiscovery(SnmpType.GetRequestPdu);
// Create report
var report = discovery.GetResponse(60000, iPEndPoint);
// Instantiate the variable list
List variables = [];
// Fill the variable list
switch (operation)
{
case SnmpOperation.GetDeviceStillConnected:
// Interface Operational Status
variables = [new Variable(new ObjectIdentifier($"{_PortOperationalStatus_OID}.{port}"))];
break;
case SnmpOperation.GetPortInfo:
// Setup OID variables to get port information
variables =
[
// Port Description
new Variable(new ObjectIdentifier($"{ _PortDescTable_OID }.{ port }")), // 1.3.6.1.2.1.31.1.1.1.18
// Port PVID
new Variable(new ObjectIdentifier($"{ _PortVLAN_OID }.{ port }")), // 1.3.6.1.2.1.17.7.1.4.5.1.1
// Voice VLAN
new Variable(new ObjectIdentifier($"1.3.6.1.4.1.674.10895.5000.2.6132.1.1.1.2.13.1.28.{ port }")),
// Interface Name
new Variable(new ObjectIdentifier($"{ _PortInterfaceTable_OID }.{ port }")), // 1.3.6.1.2.1.31.1.1.1.1
];
foreach (var mac in Mac_address)
{
// Get the VLAN description from the associated mac address
variables.Add(new Variable(new ObjectIdentifier($"{_VLANDescription_OID}.{mac[3]}"))); // 1.3.6.1.2.1.17.7.1.4.3.1.1
}
break;
case SnmpOperation.GetSwitchInfo:
// Switch Name
variables = [new Variable(new ObjectIdentifier($"1.3.6.1.4.1.674.10895.3000.1.2.100.7.0"))];
break;
case SnmpOperation.GetVLANDescription:
variables = [new Variable(new ObjectIdentifier($"{_VLANDescription_OID}.{port}"))];
break;
case SnmpOperation.SetVlanPurgatory:
variables =
[
new Variable(new ObjectIdentifier($"{ _PortVLAN_OID }.{ port }"), new OctetString(_PurgatoryInfo[0].ToString())),
new Variable(new ObjectIdentifier($"{ _VLANDescription_OID }.{ port }"), new OctetString(_PurgatoryInfo[1].ToString())),
];
break;
}
// Send the Request
switch (operation)
{
case SnmpOperation.GetDeviceStillConnected:
case SnmpOperation.GetPortInfo:
case SnmpOperation.GetSwitchInfo:
case SnmpOperation.GetVLANDescription:
// Create SNMP request
var getRequest = new GetRequestMessage(VersionCode.V3, Messenger.NextMessageId, Messenger.NextRequestId, _SNMPUserName, new OctetString("GetVLANDescription"), variables, _Priv, Messenger.MaxMessageSize, report);
// Send request and get reply
var reply = getRequest.GetResponse(60000, iPEndPoint);
if (reply is ReportMessage)
{
// according to RFC 3414, send a second request to sync time.
getRequest = new GetRequestMessage(VersionCode.V3, Messenger.NextMessageId, Messenger.NextRequestId, _SNMPUserName, new OctetString("GetVLANDescription"), variables, _Priv, Messenger.MaxMessageSize, reply);
return getRequest.GetResponse(60000, iPEndPoint);
}
else
return getRequest.GetResponse(60000, iPEndPoint);
case SnmpOperation.SetVlanPurgatory:
var setRequest = new SetRequestMessage(VersionCode.V3, Messenger.NextMessageId, Messenger.NextRequestId, _SNMPUserName, new OctetString("SetVlanPurgatory"), variables, _Priv, Messenger.MaxMessageSize, report);
// Send request and get reply
return setRequest.GetResponse(60000, iPEndPoint);
}
return null;
}
< /code>
Я ожидаю (и используется) получить isnmpmessage, возвращаемый там, где сообщением. Данные: 41}
Я ожидаю, что первый элемент в списке будет (из переменной _portdesctable_oid):
{variable: id: 1.3.6.1.2.1.31.1.1.18.95; Данные: порт 1-113 [1 -й этаж - 1.101 - Юг]}
Другая вещь, которую я заметил, - это свойство «переменные», в которых было передано 4 элемента в списке, а после того, как метод «getRequestmessage» называется только один элемент и содержит {переменный: ID: 1.3.6.1.2.1.2.2.1.1.157; Данные: null}, который, я считаю, является статусом работы порта.
Изменен GetRequestMessag>
Подробнее здесь: https://stackoverflow.com/questions/797 ... e-to-net-8
Возвращение значения на sharpsnmp getRequestmessage неожиданно после обновления до .NET 8 ⇐ C#
Место общения программистов C#
1759858354
Anonymous
После подключения устройства слушатель получает сообщение о ловушке, запрос отправляется на переключатель, который отправил ловушку, чтобы получить информацию о порте и устройстве, которое инициировало первоначальное сообщение ловушки. Возвращенные значения больше не то, что ожидается. Ранее эти действия выполнялись в рамках .NET Framework 4.7 до обновления до .NET 8 и обновления NUGET для SHARPSNMP < /p>
Вот функция, используемая для получения информации о порте. В этом случае я призываю операцию [b] snmpoperation.getportinfo [/b] :
private ISnmpMessage SNMP_Operation(IPEndPoint iPEndPoint, SnmpOperation operation, string port = "", List Mac_address = null)
{
// Create discovery
var discovery = Messenger.GetNextDiscovery(SnmpType.GetRequestPdu);
// Create report
var report = discovery.GetResponse(60000, iPEndPoint);
// Instantiate the variable list
List variables = [];
// Fill the variable list
switch (operation)
{
case SnmpOperation.GetDeviceStillConnected:
// Interface Operational Status
variables = [new Variable(new ObjectIdentifier($"{_PortOperationalStatus_OID}.{port}"))];
break;
case SnmpOperation.GetPortInfo:
// Setup OID variables to get port information
variables =
[
// Port Description
new Variable(new ObjectIdentifier($"{ _PortDescTable_OID }.{ port }")), // 1.3.6.1.2.1.31.1.1.1.18
// Port PVID
new Variable(new ObjectIdentifier($"{ _PortVLAN_OID }.{ port }")), // 1.3.6.1.2.1.17.7.1.4.5.1.1
// Voice VLAN
new Variable(new ObjectIdentifier($"1.3.6.1.4.1.674.10895.5000.2.6132.1.1.1.2.13.1.28.{ port }")),
// Interface Name
new Variable(new ObjectIdentifier($"{ _PortInterfaceTable_OID }.{ port }")), // 1.3.6.1.2.1.31.1.1.1.1
];
foreach (var mac in Mac_address)
{
// Get the VLAN description from the associated mac address
variables.Add(new Variable(new ObjectIdentifier($"{_VLANDescription_OID}.{mac[3]}"))); // 1.3.6.1.2.1.17.7.1.4.3.1.1
}
break;
case SnmpOperation.GetSwitchInfo:
// Switch Name
variables = [new Variable(new ObjectIdentifier($"1.3.6.1.4.1.674.10895.3000.1.2.100.7.0"))];
break;
case SnmpOperation.GetVLANDescription:
variables = [new Variable(new ObjectIdentifier($"{_VLANDescription_OID}.{port}"))];
break;
case SnmpOperation.SetVlanPurgatory:
variables =
[
new Variable(new ObjectIdentifier($"{ _PortVLAN_OID }.{ port }"), new OctetString(_PurgatoryInfo[0].ToString())),
new Variable(new ObjectIdentifier($"{ _VLANDescription_OID }.{ port }"), new OctetString(_PurgatoryInfo[1].ToString())),
];
break;
}
// Send the Request
switch (operation)
{
case SnmpOperation.GetDeviceStillConnected:
case SnmpOperation.GetPortInfo:
case SnmpOperation.GetSwitchInfo:
case SnmpOperation.GetVLANDescription:
// Create SNMP request
var getRequest = new GetRequestMessage(VersionCode.V3, Messenger.NextMessageId, Messenger.NextRequestId, _SNMPUserName, new OctetString("GetVLANDescription"), variables, _Priv, Messenger.MaxMessageSize, report);
// Send request and get reply
var reply = getRequest.GetResponse(60000, iPEndPoint);
if (reply is ReportMessage)
{
// according to RFC 3414, send a second request to sync time.
getRequest = new GetRequestMessage(VersionCode.V3, Messenger.NextMessageId, Messenger.NextRequestId, _SNMPUserName, new OctetString("GetVLANDescription"), variables, _Priv, Messenger.MaxMessageSize, reply);
return getRequest.GetResponse(60000, iPEndPoint);
}
else
return getRequest.GetResponse(60000, iPEndPoint);
case SnmpOperation.SetVlanPurgatory:
var setRequest = new SetRequestMessage(VersionCode.V3, Messenger.NextMessageId, Messenger.NextRequestId, _SNMPUserName, new OctetString("SetVlanPurgatory"), variables, _Priv, Messenger.MaxMessageSize, report);
// Send request and get reply
return setRequest.GetResponse(60000, iPEndPoint);
}
return null;
}
< /code>
Я ожидаю (и используется) получить isnmpmessage, возвращаемый там, где сообщением. Данные: 41}
Я ожидаю, что первый элемент в списке будет (из переменной _portdesctable_oid):
{variable: id: 1.3.6.1.2.1.31.1.1.18.95; Данные: порт 1-113 [1 -й этаж - 1.101 - Юг]}
Другая вещь, которую я заметил, - это свойство «переменные», в которых было передано 4 элемента в списке, а после того, как метод «getRequestmessage» называется только один элемент и содержит {переменный: ID: 1.3.6.1.2.1.2.2.1.1.157; Данные: null}, который, я считаю, является статусом работы порта.
Изменен GetRequestMessag>
Подробнее здесь: [url]https://stackoverflow.com/questions/79784790/return-value-on-sharpsnmp-getrequestmessage-unexpected-after-upgrade-to-net-8[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия