-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
63431f7
commit 333dfee
Showing
6 changed files
with
190 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
using Arad.SnmpSharp; | ||
using Arad.SnmpSharp.Types; | ||
using System; | ||
using System.Net; | ||
|
||
namespace SetRequest | ||
{ | ||
internal class Program | ||
{ | ||
static void Main(string[] args) | ||
{ | ||
// Prepare target | ||
UdpTarget target = new UdpTarget((IPAddress)new IpAddress("host-name")); | ||
// Create a SET PDU | ||
Pdu pdu = new Pdu(PduType.Set); | ||
// Set sysLocation.0 to a new string | ||
pdu.VbList.Add(new Oid("1.3.6.1.2.1.1.6.0"), new Octetstring("Some other value")); | ||
// Set a value to integer | ||
pdu.VbList.Add(new Oid("1.3.6.1.2.1.67.1.1.1.1.5.0"), new Integer32(500)); | ||
// Set a value to unsigned integer | ||
pdu.VbList.Add(new Oid("1.3.6.1.2.1.67.1.1.1.1.6.0"), new UInteger32(101)); | ||
// Set Agent security parameters | ||
AgentParameters aparam = new AgentParameters(SnmpVersion.Ver2, new Octetstring("private")); | ||
// Response packet | ||
SnmpV2Packet response; | ||
try | ||
{ | ||
// Send request and wait for response | ||
response = target.Request(pdu, aparam) as SnmpV2Packet; | ||
} | ||
catch (Exception ex) | ||
{ | ||
// If exception happens, it will be returned here | ||
Console.WriteLine(string.Format("Request failed with exception: {0}", ex.Message)); | ||
target.Close(); | ||
return; | ||
} | ||
// Make sure we received a response | ||
if (response == null) | ||
{ | ||
Console.WriteLine("Error in sending SNMP request."); | ||
} | ||
else | ||
{ | ||
// Check if we received an SNMP error from the agent | ||
if (response.Pdu.ErrorStatus != 0) | ||
{ | ||
Console.WriteLine(string.Format("SNMP agent returned ErrorStatus {0} on index {1}", | ||
response.Pdu.ErrorStatus, response.Pdu.ErrorIndex)); | ||
} | ||
else | ||
{ | ||
// Everything is ok. Agent will return the new value for the OID we changed | ||
Console.WriteLine(string.Format("Agent response {0}: {1}", | ||
response.Pdu[0].Oid.ToString(), response.Pdu[0].Value.ToString())); | ||
} | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
|
||
<PropertyGroup> | ||
<OutputType>Exe</OutputType> | ||
<TargetFramework>net5.0</TargetFramework> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<ProjectReference Include="..\..\Arad.SnmpSharp\Arad.SnmpSharp.csproj" /> | ||
</ItemGroup> | ||
|
||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
using System; | ||
using System.Net.Sockets; | ||
using System.Net; | ||
using Arad.SnmpSharp; | ||
|
||
namespace Traprecv | ||
{ | ||
internal class Program | ||
{ | ||
static void Main(string[] args) | ||
{ | ||
// Construct a socket and bind it to the trap manager port 162 | ||
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); | ||
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 162); | ||
EndPoint ep = (EndPoint)ipep; | ||
socket.Bind(ep); | ||
// Disable timeout processing. Just block until packet is received | ||
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 0); | ||
bool run = true; | ||
int inlen = -1; | ||
while (run) | ||
{ | ||
byte[] indata = new byte[16 * 1024]; | ||
// 16KB receive buffer int inlen = 0; | ||
IPEndPoint peer = new IPEndPoint(IPAddress.Any, 0); | ||
EndPoint inep = (EndPoint)peer; | ||
try | ||
{ | ||
inlen = socket.ReceiveFrom(indata, ref inep); | ||
} | ||
catch (Exception ex) | ||
{ | ||
Console.WriteLine("Exception {0}", ex.Message); | ||
inlen = -1; | ||
} | ||
if (inlen > 0) | ||
{ | ||
// Check protocol version int | ||
int ver = SnmpPacket.GetProtocolVersion(indata, inlen); | ||
if (ver == (int)SnmpVersion.Ver1) | ||
{ | ||
// Parse SNMP Version 1 TRAP packet | ||
SnmpV1TrapPacket pkt = new SnmpV1TrapPacket(); | ||
pkt.decode(indata, inlen); | ||
Console.WriteLine("** SNMP Version 1 TRAP received from {0}:", inep.ToString()); | ||
Console.WriteLine("*** Trap generic: {0}", pkt.Pdu.Generic); | ||
Console.WriteLine("*** Trap specific: {0}", pkt.Pdu.Specific); | ||
Console.WriteLine("*** Agent address: {0}", pkt.Pdu.AgentAddress.ToString()); | ||
Console.WriteLine("*** Timestamp: {0}", pkt.Pdu.TimeStamp.ToString()); | ||
Console.WriteLine("*** VarBind count: {0}", pkt.Pdu.VbList.Count); | ||
Console.WriteLine("*** VarBind content:"); | ||
foreach (Vb v in pkt.Pdu.VbList) | ||
{ | ||
Console.WriteLine("**** {0} {1}: {2}", v.Oid.ToString(), SnmpConstants.GetTypeName(v.Value.Type), v.Value.ToString()); | ||
} | ||
Console.WriteLine("** End of SNMP Version 1 TRAP data."); | ||
} | ||
else | ||
{ | ||
// Parse SNMP Version 2 TRAP packet | ||
SnmpV2Packet pkt = new SnmpV2Packet(); | ||
pkt.decode(indata, inlen); | ||
Console.WriteLine("** SNMP Version 2 TRAP received from {0}:", inep.ToString()); | ||
if ((PduType)pkt.Pdu.Type != PduType.V2Trap) | ||
{ | ||
Console.WriteLine("*** NOT an SNMPv2 trap ****"); | ||
} | ||
else | ||
{ | ||
Console.WriteLine("*** Community: {0}", pkt.Community.ToString()); | ||
Console.WriteLine("*** VarBind count: {0}", pkt.Pdu.VbList.Count); | ||
Console.WriteLine("*** VarBind content:"); | ||
foreach (Vb v in pkt.Pdu.VbList) | ||
{ | ||
Console.WriteLine("**** {0} {1}: {2}", | ||
v.Oid.ToString(), SnmpConstants.GetTypeName(v.Value.Type), v.Value.ToString()); | ||
} | ||
Console.WriteLine("** End of SNMP Version 2 TRAP data."); | ||
} | ||
} | ||
} | ||
else | ||
{ | ||
if (inlen == 0) | ||
Console.WriteLine("Zero length packet received."); | ||
} | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
|
||
<PropertyGroup> | ||
<OutputType>Exe</OutputType> | ||
<TargetFramework>net5.0</TargetFramework> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<ProjectReference Include="..\..\Arad.SnmpSharp\Arad.SnmpSharp.csproj" /> | ||
</ItemGroup> | ||
|
||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters