本文整理汇总了C#中Oid.Add方法的典型用法代码示例。如果您正苦于以下问题:C# Oid.Add方法的具体用法?C# Oid.Add怎么用?C# Oid.Add使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Oid
的用法示例。
在下文中一共展示了Oid.Add方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetTable
public static void GetTable()
{
Dictionary<String, Dictionary<uint, AsnType>> result = new Dictionary<String, Dictionary<uint, AsnType>>();
// Not every row has a value for every column so keep track of all columns available in the table
List<uint> tableColumns = new List<uint>();
// Prepare agent information
AgentParameters param = new AgentParameters(SnmpVersion.Ver2, new OctetString("public"));
IpAddress peer = new IpAddress("192.168.15.42");
if (!peer.Valid)
{
Console.WriteLine("Unable to resolve name or error in address for peer: {0}", "");
return;
}
UdpTarget target = new UdpTarget((IPAddress)peer);
// This is the table OID supplied on the command line
Oid startOid = new Oid("1.3.6.1.2.1.47.1.1.1");
// Each table OID is followed by .1 for the entry OID. Add it to the table OID
startOid.Add(1); // Add Entry OID to the end of the table OID
// Prepare the request PDU
Pdu bulkPdu = Pdu.GetBulkPdu();
bulkPdu.VbList.Add(startOid);
// We don't need any NonRepeaters
bulkPdu.NonRepeaters = 0;
// Tune MaxRepetitions to the number best suited to retrive the data
bulkPdu.MaxRepetitions = 100;
// Current OID will keep track of the last retrieved OID and be used as
// indication that we have reached end of table
Oid curOid = (Oid)startOid.Clone();
// Keep looping through results until end of table
while (startOid.IsRootOf(curOid))
{
SnmpPacket res = null;
try
{
res = target.Request(bulkPdu, param);
}
catch (Exception ex)
{
Console.WriteLine("Request failed: {0}", ex.Message);
target.Close();
return;
}
// For GetBulk request response has to be version 2
if (res.Version != SnmpVersion.Ver2)
{
Console.WriteLine("Received wrong SNMP version response packet.");
target.Close();
return;
}
// Check if there is an agent error returned in the reply
if (res.Pdu.ErrorStatus != 0)
{
Console.WriteLine("SNMP agent returned error {0} for request Vb index {1}",
res.Pdu.ErrorStatus, res.Pdu.ErrorIndex);
target.Close();
return;
}
// Go through the VbList and check all replies
foreach (Vb v in res.Pdu.VbList)
{
curOid = (Oid)v.Oid.Clone();
// VbList could contain items that are past the end of the requested table.
// Make sure we are dealing with an OID that is part of the table
if (startOid.IsRootOf(v.Oid))
{
// Get child Id's from the OID (past the table.entry sequence)
uint[] childOids = Oid.GetChildIdentifiers(startOid, v.Oid);
// Get the value instance and converted it to a dotted decimal
// string to use as key in result dictionary
uint[] instance = new uint[childOids.Length - 1];
Array.Copy(childOids, 1, instance, 0, childOids.Length - 1);
String strInst = InstanceToString(instance);
// Column id is the first value past <table oid>.entry in the response OID
uint column = childOids[0];
if (!tableColumns.Contains(column))
tableColumns.Add(column);
if (result.ContainsKey(strInst))
{
result[strInst][column] = (AsnType)v.Value.Clone();
}
else
{
result[strInst] = new Dictionary<uint, AsnType>();
result[strInst][column] = (AsnType)v.Value.Clone();
}
}
else
{
// We've reached the end of the table. No point continuing the loop
break;
}
}
// If last received OID is within the table, build next request
if (startOid.IsRootOf(curOid))
{
bulkPdu.VbList.Clear();
bulkPdu.VbList.Add(curOid);
bulkPdu.NonRepeaters = 0;
bulkPdu.MaxRepetitions = 100;
}
//.........这里部分代码省略.........
示例2: pobierzTabele
public Tabela pobierzTabele()
{
/*!
*Pobiera tabele SNMP.
*/
Tabela tabela1 = new Tabela();
AgentParameters param = new AgentParameters(SnmpVersion.Ver2, new OctetString(community));
IpAddress peer = new IpAddress(host);
if (!peer.Valid)
{
Console.WriteLine("Zły adres.");
//return false;
}
UdpTarget target = new UdpTarget((IPAddress)peer);
Oid startOid = new Oid("1.3.6.1.2.1.6.13");
startOid.Add(1);
Pdu bulkPdu = Pdu.GetBulkPdu();
bulkPdu.VbList.Add(startOid);
bulkPdu.NonRepeaters = 0;
bulkPdu.MaxRepetitions = 100;
Oid curOid = (Oid)startOid.Clone();
while (startOid.IsRootOf(curOid))
{
SnmpPacket res = null;
try
{
res = target.Request(bulkPdu, param);
}
catch (Exception ex)
{
Console.WriteLine("Zapytanie nieudane {0}", ex.Message);
target.Close();
//return false;
}
if (res.Version != SnmpVersion.Ver2)
{
Console.WriteLine("Otrzymano inną wersję SNMP w odpowiedzi.");
target.Close();
//return false;
}
if (res.Pdu.ErrorStatus != 0)
{
Console.WriteLine("SNMP agent zwrócił błąd {0} dla zapytania {1}", res.Pdu.ErrorStatus, res.Pdu.ErrorIndex);
target.Close();
//return false;
}
foreach (Vb v in res.Pdu.VbList)
{
curOid = (Oid)v.Oid.Clone();
if (startOid.IsRootOf(v.Oid))
{
uint[] childOids = Oid.GetChildIdentifiers(startOid, v.Oid);
uint[] instance = new uint[childOids.Length - 1];
Array.Copy(childOids, 1, instance, 0, childOids.Length - 1);
String strInst = InstanceToString(instance);
uint column = childOids[0];
if (!tabelaKolumn.Contains(column))
tabelaKolumn.Add(column);
if (slownikRezultatu.ContainsKey(strInst))
{
slownikRezultatu[strInst][column] = (AsnType)v.Value.Clone();
}
else {
slownikRezultatu[strInst] = new Dictionary<uint, AsnType>();
slownikRezultatu[strInst][column] = (AsnType)v.Value.Clone();
}
}
else {
break;
}
}
if (startOid.IsRootOf(curOid))
{
bulkPdu.VbList.Clear();
bulkPdu.VbList.Add(curOid);
bulkPdu.NonRepeaters = 0;
bulkPdu.MaxRepetitions = 100;
}
}
target.Close();
if (slownikRezultatu.Count <= 0)
{
//Console.WriteLine("Żadnych rezlutatów nie zwrócono");
//return false;
}
else {
//return true;
}
/*UFAM W TABELE, ŻE SŁOWNIK NIE ODWRÓCI KOLEJNOŚCI I WALĘ NA OŚLEP KOLEJNE WARTOŚCI*/
foreach (KeyValuePair<string, Dictionary<uint, AsnType>> kvp in slownikRezultatu)
{
int i = 0;
tabela1.tcpAddress.Add(kvp.Key);
foreach (uint kolumna in tabelaKolumn)
{
if (kvp.Value.ContainsKey(kolumna))
{
if (i == 0)
//.........这里部分代码省略.........
示例3: pobierzTabeleDoUsuniecia
public void pobierzTabeleDoUsuniecia()
{
/*!
*Pobiera tabele SNMP.
*/
Dictionary<String, Dictionary<uint, AsnType>> tabela_rezultat = new Dictionary<string, Dictionary<uint, AsnType>>();
List<uint> tabeleKolumy = new List<uint>();
AgentParameters param = new AgentParameters(SnmpVersion.Ver2, new OctetString(community));
IpAddress peer = new IpAddress(host);
if (!peer.Valid)
{
Console.WriteLine("Zły adres.");
return;
}
UdpTarget target = new UdpTarget((IPAddress)peer);
Oid startOid = new Oid("1.3.6.1.2.1.6.13");
startOid.Add(1);
//przygotowanie zapytania
Pdu bulkPdu = Pdu.GetBulkPdu();
bulkPdu.VbList.Add(startOid);
bulkPdu.NonRepeaters = 0;
bulkPdu.MaxRepetitions = 100;
Oid curOid = (Oid)startOid.Clone();
while (startOid.IsRootOf(curOid))
{
SnmpPacket res = null;
try
{
res = target.Request(bulkPdu, param);
}
catch (Exception ex)
{
Console.WriteLine("Zapytanie nieudane {0}", ex.Message);
target.Close();
return;
}
if (res.Version != SnmpVersion.Ver2)
{
Console.WriteLine("Received wrong SNMP version response packet.");
target.Close();
return;
}
if (res.Pdu.ErrorStatus != 0)
{
Console.WriteLine("SNMP agent zwrócił błąd {0} dla zapytania {1}", res.Pdu.ErrorStatus, res.Pdu.ErrorIndex);
target.Close();
return;
}
foreach (Vb v in res.Pdu.VbList)
{
curOid = (Oid)v.Oid.Clone();
if (startOid.IsRootOf(v.Oid))
{
uint[] childOids = Oid.GetChildIdentifiers(startOid, v.Oid);
uint[] instance = new uint[childOids.Length - 1];
Array.Copy(childOids, 1, instance, 0, childOids.Length - 1);
String strInst = InstanceToString(instance);
uint column = childOids[0];
if (!tabeleKolumy.Contains(column))
tabeleKolumy.Add(column);
if (tabela_rezultat.ContainsKey(strInst))
{
tabela_rezultat[strInst][column] = (AsnType)v.Value.Clone();
}
else
{
tabela_rezultat[strInst] = new Dictionary<uint, AsnType>();
tabela_rezultat[strInst][column] = (AsnType)v.Value.Clone();
}
}
else
{
break; //bo koniec tabeli ;)
}
}
if (startOid.IsRootOf(curOid))
{
bulkPdu.VbList.Clear();
bulkPdu.VbList.Add(curOid);
bulkPdu.NonRepeaters = 0;
bulkPdu.MaxRepetitions = 100;
}
target.Close();
if (tabela_rezultat.Count <= 0)
{
Console.WriteLine("Żadnych rezlutatów nie zwrócono");
}
else
{
Console.WriteLine("Instance");
foreach (uint column in tabeleKolumy)
{
Console.Write("\tColumn id {0}", column);
}
Console.WriteLine("");
foreach (KeyValuePair<string, Dictionary<uint, AsnType>> kvp in tabela_rezultat)
{
Console.Write("{0}", kvp.Key);
//.........这里部分代码省略.........
示例4: Send
/// <summary>
/// Executa uma requisição do tipo Set
/// </summary>
/// <param name="setValue">Valor a set definido</param>
public void Send(AsnType setValue)
{
using (var target = new UdpTarget(Host.IP, Host.Port, TimeOut, Retries))
{
var agentp = new AgentParameters(SnmpVersion.Ver2, new OctetString(Host.Community));
// Caso necessario, appenda o .0 na requisição
var oid = new Oid(Object.OID);
if (oid[oid.Length - 1] != 0)
oid.Add(0);
// Cria pacote de dados
RequestData = new Pdu(setValue == null ? PduType.Get : PduType.Set);
// Adiciona dados da requisição
switch (RequestData.Type)
{
case PduType.Get:
RequestData.VbList.Add(oid);
break;
case PduType.Set:
RequestData.VbList.Add(oid, setValue);
break;
default:
throw new InvalidOperationException("unsupported");
}
try
{
if (LogRequests) Logger.Self.Log(this);
Timestamp = DateTime.Now;
// Envia requisição
ResponsePacket = target.Request(RequestData, agentp) as SnmpV2Packet;
// Trata resposta
if (ResponsePacket != null && ResponsePacket.Pdu.ErrorStatus == (int)PduErrorStatus.noError)
{
// TODO: suportar mais de um retorno
var item = ResponsePacket.Pdu.VbList[0];
ResponseValue = item.Value;
if (LogRequests) Logger.Self.Log(item);
}
}
catch (Exception ex)
{
if (LogRequests) Logger.Self.Log(ex);
throw new SnmpException("Não foi possível realizar a operação");
}
}
}