我有以下代码来获取表数据。我不知道如何获取表索引值。 GetTable只返回锯齿状变量数组列表。 请建议如何获取每一行的表索引。
var snmpVaraibles = slave.GetTable(
oid,
SnmpVersion.Three,
null,
new Security
{
Username = "myuser",
AuthenticationPassword = "Password1234",
AuthenticationProtocol = AuthenticationProtocol.Md5,
PrivacyPassword = "Pswd",
PrivacyProtocol = PrivacyProtocol.Des
},
new IPEndPoint(IPAddress.Parse(ipAddress), port), retries, maxRepetition);
for (var i = 0; i <= rows; i++)
{
var mibTableEntry = new MIBTableEntryEntity();
for (var j = 0; j <= columns; j++)
{
var dartVariable = snmpVariables[i, j];
try
{
string value;
if (dartVariable.Definition !=null && !string.IsNullOrEmpty(dartVariable.Definition.Syntax) && dartVariable.Definition.Syntax.Equals("OctetString") && !string.IsNullOrEmpty(dartVariable.Value.ToString()))
{
var val = (OctetString) dartVariable.Value;
value = string.Compare(dartVariable.Definition.ComposedSyntax, "displaystring", true) == 0
? val.ToString() : MACAddress.ToHexString(val.Value);
}
else
{
value = dartVariable.Value.ToString();
}
value = value.Trim().TrimEnd(new char[] {'\0'});
var dartVariableMib = new MIBObjectEntity
{
Description = dartVariable.Definition != null ? dartVariable.Definition.Description : null,
IsLoaded = true,
Name = dartVariable.Definition != null ? dartVariable.Definition.Name : null
};
var snmpVariable = new MIBVariableEntity
{
Definition = dartVariableMib,
Id = dartVariable.Id,
IsLoaded = true,
Value = value,
ValueName = dartVariable.ValueName
};
mibTableEntry.Variables.Add(snmpVariable);
}
catch (Exception ex)
{
_log.Error(ex);
}
}
答案 0 :(得分:0)
我已经改变了这样的for循环。因为索引值被添加到每个列snmp变量的id中,如此(columnoid +“。”+ index_value)。 我们可以删除columnoid +“。”来自Id,这将返回索引值。 如果我在这里错了,请纠正我。
var rows = snmpVariables.GetUpperBound( 0 );
var columns = snmpVariables.GetUpperBound( 1 );
for ( var i = 0; i <= rows; i++ )
{
var mibTableEntry = new MIBTableEntryEntity();
for ( var j = 0; j <= columns; j++ )
{
//Fetching index - Begin
var dartVariable = snmpVariables[i, j];
if ( j == 0 && dartVariable.Definition != null && !string.IsNullOrEmpty( dartVariable.Definition.Oid ) && !string.IsNullOrEmpty( dartVariable.Id ) )
{
mibTableEntry.IndexValue = dartVariable.Id.Replace( string.Concat( dartVariable.Definition.Oid, "." ), "" );
}
//Fetching index End
try
{
string value;
if ( dartVariable.Definition != null && !string.IsNullOrEmpty( dartVariable.Definition.Syntax ) && dartVariable.Definition.Syntax.Equals( "OctetString" ) && !string.IsNullOrEmpty( dartVariable.Value.ToString() ) )
{
var val = ( OctetString )dartVariable.Value;
value = string.Compare( dartVariable.Definition.ComposedSyntax, "displaystring", true ) == 0
? val.ToString() : MACAddress.ToHexString( val.Value );
}
else
{
value = dartVariable.Value.ToString();
}
value = value.Trim().TrimEnd( new char[] { '\0' } );
var dartVariableMib = new MIBObjectEntity
{
Description = dartVariable.Definition != null ? dartVariable.Definition.Description : null,
IsLoaded = true,
Name = dartVariable.Definition != null ? dartVariable.Definition.Name : null
};
var snmpVariable = new MIBVariableEntity
{
Definition = dartVariableMib,
Id = dartVariable.Id,
IsLoaded = true,
Value = value,
ValueName = dartVariable.ValueName
};
mibTableEntry.Variables.Add( snmpVariable );
}
}
}