使用 Indy 组件实现 SNMP SendTrap

2024-05-01

我需要通过 SNMP 在 C++Builder 上报告我的应用程序的错误。

我开始使用 Indy 组件实现 SNMP SendTrap。

void __fastcall TMainForm::btSendTrapClick(TObject *Sender)
{
UnicodeString myEnterprise   = "1.5.5.5.5.5.5.5";
UnicodeString eventType      = "1.5.5.5.5.5.5.5.1";
UnicodeString eventDistance  = "1.5.5.5.5.5.5.5.2";

TIdSNMP * idSnmp = 0;
TSNMPInfo * infoSnmp = 0;

idSnmp                 = new TIdSNMP(NULL);
infoSnmp               = new TSNMPInfo(idSnmp);

idSnmp->Host           = edHost->Text;
idSnmp->Community      = "public";

infoSnmp->Host           = edHost->Text;
infoSnmp->Community      = "public";
infoSnmp->Enterprise = myEnterprise;
infoSnmp->GenTrap = 6;                       // I've met such values
infoSnmp->SpecTrap = 1;                      // somewhere in inet
infoSnmp->MIBAdd(eventType,"ftCritical");
infoSnmp->MIBAdd(eventDistance,"2.357");

idSnmp->SendTrap();

delete idSnmp;
}

但是当我运行应用程序时,我的系统中没有 udp 活动。当我运行这样的东西时

idSnmp->QuickSend(sysDescr, "public", edHost->Text, val);

wireshark 显示 192.168.100.21 192.168.100.19 SNMP 82 get-request 1.3.6.1.2.1.1.3.0

但当idSnmp->SendTrap()wireshark 什么也看不到(在这两种情况下,wireshark 的过滤器都是 UDP 端口范围 161-162)

我很高兴看到一些关于我的代码的评论或者 SendTrap 的工作示例:)


你没有填充TIdSNMP::Trap具有任何值。因此TIdSNMP::SendTrap()没有发送任何内容。它没有什么可发送的。

试试这个:

void __fastcall TMainForm::btSendTrapClick(TObject *Sender)
{
    String myEnterprise   = _D("1.5.5.5.5.5.5.5");
    String eventType      = myEnterprise + _D(".1");
    String eventDistance  = myEnterprise + _D(".2");

    TIdSNMP *idSnmp = new TIdSNMP(NULL);

    idSnmp->Trap->Host       = edHost->Text;
    idSnmp->Trap->Community  = _D("public");
    idSnmp->Trap->Enterprise = myEnterprise;
    idSnmp->Trap->GenTrap    = 6;                       // I've met such values
    idSnmp->Trap->SpecTrap   = 1;                      // somewhere in inet
    idSnmp->Trap->MIBAdd(eventType, _D("ftCritical"));
    idSnmp->Trap->MIBAdd(eventDistance, _D("2.357"));

    idSnmp->SendTrap();

    delete idSnmp;
}

或者,您可以使用TIdSNMP::QuickSendTrap()反而:

void __fastcall TMainForm::btSendTrapClick(TObject *Sender)
{
    String myEnterprise   = _D("1.5.5.5.5.5.5.5");
    String eventType      = myEnterprise + _D(".1");
    String eventDistance  = myEnterprise + _D(".2");

    TStringList *names = new TStringList;
    names->Add(eventType);
    names->Add(eventDistance);

    TStringList *values = new TStringList;
    values->AddObject(_D("ftCritical"), (TObject*)ASN1_OCTSTR);
    values->AddObject(_D("2.357"), (TObject*)ASN1_OCTSTR);

    TIdSNMP *idSnmp = new TIdSNMP(NULL);
    idSnmp->QuickSendTrap(edHost->Text, myEnterprise, _D("public"), 162, 6, 1, names, values);
    delete idSnmp;

    delete names;
    delete values;
}

或者,如果您正在为移动设备进行编译:

void __fastcall TMainForm::btSendTrapClick(TObject *Sender)
{
    String myEnterprise   = _D("1.5.5.5.5.5.5.5");
    String eventType      = myEnterprise + _D(".1");
    String eventDistance  = myEnterprise + _D(".2");

    TIdMIBValueList *mibs = new TIdMIBValueList;
    mibs->Add(TIdMIBValue(eventType, _D("ftCritical"), ASN1_OCTSTR));
    mibs->Add(TIdMIBValue(eventDistance, _D("2.357"), ASN1_OCTSTR));

    TIdSNMP *idSnmp = new TIdSNMP(NULL);
    idSnmp->QuickSendTrap(edHost->Text, myEnterprise, _D("public"), 162, 6, 1, mibs);
    delete idSnmp;

    delete mibs;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Indy 组件实现 SNMP SendTrap 的相关文章

  • 在delphi中获取互联网时间

    我想从互联网获取时间和日期 我用了下面的代码 IdDayTime1 ReadTimeout 5000 IdDayTime1 Host www time windows com IdDayTime1 Port 37 Label1 Captio
  • 寻找 .NET SNMP 扩展代理

    我正在开发一个 C 针对完整框架 4 Windows 应用程序 我需要该应用程序写入一些简单的计数器 更重要的是 当发生重大应用程序事件时 引发 或者应该触发 一些 SNMP 陷阱 现在大多数可用的 NET SNMP 库都可以做到这一点 到
  • SNMP V3 CBC-DES:如何使用 8 字节长的加密密钥对 PDU 进行加密? (DES,前 IV)

    过去我已经实现了自己的 v1 v2 SNMP 管理器 现在我还想支持 v3 因此必须实现 PDU 的加密 根据RFC2274 第 8 1 1 1 章16 字节私有密钥的前 8 个字节代表 DES 密钥 私有密钥的后 8 个字节代表 Prev
  • INDY 10 TCP 服务器 - 与非线程安全 VCL 代码结合

    VCL 不是线程安全的 因此我想在 INDY 10 TCP 中向 gui 写入信息不是一个好主意server execute 功能 如何将信息从服务器执行发送到VCL 我需要修改一个 TBitmap 里面tcpserver execute功
  • 为什么 IdHTTPProxyServer 会更改请求的 HTTP 版本?

    最近 我发现IdHTTPProxyServer会自动将所有HTTP 1 1请求更改为HTTP 1 0请求 这对我来说有点奇怪 因为我认为代理服务器不应该更改 HTTP 版本 有什么方法可以强制代理服务器不更改 HTTP 版本吗 TIdHTT
  • 如何有条件地编译更新的 Indy 功能?

    我已经找到了这个答案 https stackoverflow com a 14422904 988445关于如何在运行时检查 Indy 版本 有多种不同的方法 不过 我正在寻找如何使用条件在编译时检查 Indy 版本 新版本的 Indy 中
  • snmpget:此代理在此 OID 上没有可用的此类对象

    我正在尝试按照本教程将我自己的 MIB 模块添加到 snmp 代理中 http www net snmp org wiki index php TUT Writing a MIB Module http www net snmp org w
  • 如何为 eBay 浏览 API 函数创建 HTTP 标头

    我正在尝试通过 eBay 的浏览 API 获得产品评论评级 这是我的这个函数的代码 sHeaders TStringList Create sHeaders Add X EBAY C ENDUSERCTX affiliateCampaign
  • Indy TIdTCPClient 接收文本

    我尝试在 idtcpclient 中接收文本 但它不起作用 这是我在计时器中使用的代码 procedure TForm1 Timer2Timer Sender TObject var receivedtext string begin if
  • 如何使用 indy10 Delphi 发送西里尔文数据

    当我在网站上发送一些西里尔文字时 该文字显示为 这是我的发送功能 http TIDHttp Create nil http HandleRedirects true http ReadTimeout 5000 http Request Co
  • Delphi - TDictionary 线程安全吗

    我的想法是使用 TDictionary 来管理 IdTCPServer 上的客户端连接 这是一个用于理解目的的简单示例代码 未经测试 var Dic TDictionary
  • 使用pySNMP编写SNMP代理(适用于OpenNMS)

    我正在尝试编写一个 python SNMP 代理 我可以将其嵌入到我的 python 应用程序中 以便可以通过 OpenNMS 远程监控该应用程序 OpenNMS 期望 Agent 实现HOST RESOURCES MIB查询两个字段hrS
  • Indy 可以运行 Javascript 吗?

    有一种名为 AnyChart 的软件产品 非常适合在网页中嵌入基于 Flashed 的图表 AnyCharts 还可以导出为 PNG 文件格式 这是一个例子
  • 将 TAction 重命名为另一种形式

    我有 2 份表格 我想分享一份TActionManager并分配TAction s 第一种形式是主要形式 它包含TActionManager TAction标题为 行动 Form1 的主菜单将此操作和菜单项标题属性设置为 操作 A Form
  • 如何在 Delphi 7 中使用 Indy 10 进行 NTLM 身份验证?

    我想在 Delphi 7 中使用 Indy 10 组件进行 NTLM 身份验证 这是我的源代码 uses Windows Messages SysUtils Variants Classes Graphics Controls Forms
  • 更好的德尔福印地 2007

    使用 Delphi 2007 附带的默认 indy10 或将其升级到最新快照版本哪个更好 为什么 谢谢 始终保持最新版本 它包含错误修复 如果您报告 Delphi 提供的库存版本存在问题 您将得到的第一个建议是升级到最新版本 因为您的错误可
  • 使用 Indy 组件实现 SNMP SendTrap

    我需要通过 SNMP 在 C Builder 上报告我的应用程序的错误 我开始使用 Indy 组件实现 SNMP SendTrap void fastcall TMainForm btSendTrapClick TObject Sender
  • 为什么 SNMP 通常在 UDP 上运行而不是 TCP/IP 上?

    今天早上 工作中出现了大问题 因为 SNMP 陷阱没有 通过 因为 SNMP 是通过 UDP 运行的 我记得在大学网络课上 UDP 不能像 TCP IP 那样保证传输 维基百科说 SNMP 可以在 TCP IP 上运行 但 UDP 更常见
  • 从 Linux 命令行发送 SNMP 陷阱消息

    Folks 我需要从 Linux 命令行使用此命令 snmptrap 将自定义消息发送到陷阱侦听器 我需要根据用户设置在 v1 和 v2c 中发送相同的消息 这是我发现的 For v1 snmptrap v 1 c Tas hostname
  • 如何使用 Gmail 的 SMTP 和 Indy 10 发送电子邮件?

    我正在使用 Delphi 2009 和 svn 中最新的 Indy 10 通过 SMTP 发送电子邮件 但它不适用于 Gmail Google Apps 托管域 当我尝试发送电子邮件时 我收到 必须首先发出 STARTTLS 命令 我尝试用

随机推荐

  • 使用 FocusScope.of(context).unfocus() 重建小部件树

    我有这个例子 override Widget build BuildContext context return Scaffold body SafeArea child Padding padding const EdgeInsets a
  • 未找到列:1054 未知列 laravel

    所以我尝试用 laravel 制作一个表单 但除了新版本之外 他们删除了表单 但我可以让它运行 所以这里是 Route post register function user new User user gt u n Input get u
  • URL中的gs_upl是什么意思?

    在任何谷歌搜索 URL 中 gs upl 是什么意思 例如 那么 gs upl 1045l1663l0l3648l4l4l0l0l0l0l258l682l0 3 1l4l0 在这里意味着什么 从构建的脚本gs upl j 我找到 funct
  • jquery脉动文本

    我正在使用 jquery 来使文本脉动 一切都很好 但我无法理解某些事情 我只想脉动 x 次 然后停止 我正在使用以下代码来使类产生脉动 document ready function function pulsate pulsate an
  • 何时使用Statement而不是PreparedStatement?

    何时使用语句而不是准备好的语句 我想在没有参数的查询中使用语句 但为什么不使用准备好的语句 对于没有参数的查询 哪一个更快 我想在没有参数的查询中使用语句 但为什么不使用准备好的语句 那还差得远 PreparedStatements 用于返
  • aria2c - 有什么办法只保留失败下载的列表吗?

    我在用aria2c下载以文本文件形式组织的相当大的 url 列表 6000 基于此gist https gist github com jonbakerfish 0f7877c050b648169e0958ea2e2c6aca 我使用以下脚
  • 为什么 golang 堆配置文件中的“Total MB”小于顶部的“RES”?

    我有一个用 go 编写的服务 在运行时需要 6 7G 内存 RES 在顶部 所以我使用 pprof 工具试图找出问题所在 go tool pprof pdf http
  • 从 DOM 中删除一行后更新 jQuery Tablesorter 插件

    我目前有一些代码隐藏已删除的行 然后使用 remove 函数将其删除 然而 我很难让它保持 删除 状态 因为每次我刷新表排序分页器插件或我正在使用的过滤器插件插件时 删除的行会重新出现 因为它们当然被缓存了 目前的代码很简单 目前有小部件更
  • 使用 ls 和 grep 列出具有特定扩展名的文件

    我只想从当前目录获取文件 并且只输出 mp4 mp3 exe 文件 没有其他内容 所以我想我可以这样做 ls grep mp4 grep mp3 grep exe 但不会 因为第一个 grep 将仅输出 mp4 因此其他 2 个 grep
  • 如何更改詹金斯主目录位置?

    简单的问题 如何更改jenkins主目录位置 默认情况下它指向 var lib jenkins 而我希望它指向 mnt home jenkins 我已将 JENKINS HOME 更改为 mnt home jenkins 但这对我没有帮助
  • 防止 .Net MVC WS-Federation 站点中的 XmlHttpRequest 重定向响应

    我在 MVC 3 站点上使用 WS 联合 声明感知 身份验证 并且在身份验证失败时无法阻止某些发送 JSON 的 API 控制器返回重定向 我有一个名为 API 的区域 其中有几个仅返回 JSON 的控制器 这些控制器都继承自同一个基类 我
  • 使用 SVM 预测概率

    我编写了这段代码并想获得分类的概率 from sklearn import svm X 0 0 10 10 20 30 30 30 40 30 80 60 80 50 y 0 1 2 3 4 5 6 clf svm SVC clf prob
  • 在 SVG 中使用变换模拟枢轴旋转

    我在 SVG 中有一个矩形 需要从特定点绕轴旋转 我能想到的最好方法是变换到枢轴的 xy 旋转角度 然后再次变换 问题是第二个变换的 xy 我认为它会在某种程度上采用 cos 和 sin 只是不确定在哪里或为什么 会旋转 90度到 也许我以
  • 如何让我的网络爬虫通过C#登录到这个网站

    我有一个应用程序可以读取网站上的部分源代码 这一切都有效 但问题是该页面需要用户登录才能访问该源代码 我的程序需要一种方法来最初使用户登录到网站 完成后 我将能够访问和阅读源代码 需要登录的网站是 mmoinn com index do P
  • 如何将导入的命名空间提供给 CompileAssemblyFromSource

    我正在尝试将 VB 源文件加载到内存中 但是 VB 文件假定与其关联的项目具有在项目级别定义的一些全局 导入的命名空间 此 VB 功能允许单个文件在每个文件上省略 Imports 语句 在 C 中使用 Dim sourceCode As S
  • 在python 2.7中打印阿拉伯/波斯字母[重复]

    这个问题在这里已经有答案了 在下面的代码中 Python 似乎不支持阿拉伯字母 有任何想法吗 usr bin python coding utf 8 import nltk sentence tokens nltk word tokeniz
  • 如何在 ssh 命令中使用长输入参数正确转义 qsub 命令?

    我有一个复杂的 qsub 命令可以远程运行 PROJECT NAME TEXT TEST PROJECT PACK ORGANIZATION source organization MY ORGANIZATION CONTACT NAME
  • App Engine 中超时异常的名称是什么?

    出于某种原因 我的印象是它只是被称为 超时 但事实似乎并非如此 Thanks 对于数据存储区调用 例外情况是 google appengine ext db Timeout 对于超出的总 挂钟 持续时间 例外情况是 google appen
  • 在网站上集成 api.ai 聊天机器人 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在我的网站上安装一个聊天机器人 其对话风格类似于 Facebook Messenger 我希望它作为聊天窗口位于同一页面上 而不是
  • 使用 Indy 组件实现 SNMP SendTrap

    我需要通过 SNMP 在 C Builder 上报告我的应用程序的错误 我开始使用 Indy 组件实现 SNMP SendTrap void fastcall TMainForm btSendTrapClick TObject Sender