如何利用Net-SNMP工具套件管理并监控服务器

如何使用net-snmp构建代理程序 本篇主要介绍如何使用开源代码net-snmp来构建自己的代理程序,实现自己的专属业务。net-snmp支持静态编译、动态库加载、子代理加载三种方式扩展MIB,构建代理。 阅读详情

提供:ZStack云计算

系列教程

本教程为如何利用SNMP实现网络监控与管理系列三篇中的第三篇。

内容介绍

相当一部分系统管理员正在积极收集与服务器及基础设施相关的信息。可供选择的工具与方案多种多样,而其中相当一部分以SNMP技术为基础。

SNMP的全称为简单网络管理协议。虽然协议本身非常简单,但其应用结构却可能相当复杂。

在之前的教程中,我们已经探讨了SNMP协议基础知识以及如何在Ubuntu 14.04服务器上安装并配置SNMP组件。今天,我们将谈谈net-snmp中各工具的基本使用方法。

要完成本教程,大家需要根据安装与配置教程设置出两套主机。

使用SNMP客户端命令

net-snmp套件包含大量工具,可用于对远程主机上的OID值进行查询与设置。幸运的是,大部分工具使用一套标准语法集,且使用模式也比较类似。我们将在后文中介绍其中使用较为频繁的几种。

要完成本教程,大家还需要对net-snmp命令中的身份验证部分有所了解。

另外大家也可以参阅为客户端设置一套snmp.conf配置以跳过这部分验证内容,因为在设置完成后各验证细节都会直接读取自该配置文件。

如果大家还没有自己的snmp.conf文件,则需要将每条命令中的“authentication_info”替换为您的实际信息,从而接入远程守护程序。另外,我们使用以下值设置本教程中的demo账户:

-u demo -l authPriv -a MD5 -x DES -A my_new_password -X my_new_password

请注意根据实际环境对命令中的值进行修改。

利用SnmpGet检索单OID值

这可能是最为基本的SNMP信息查询命令了。在这里,我们利用snmpget命令与之前提到的基本验证标记读取用户访问的任意OID值。

使用以下命令检索系统描述:

snmpget authentication_infohost 1.3.6.1.2.1.1.1.0

由于我们已经在上部分教程中于管理计算机内安装了snmp-mibs-downloader软件包,因此也可以利用名称引用常规OID。例如,我们使用以下命令可获得同样的信息:

snmpget authentication_infohost sysDescr.0

利用SnmpGetNext检查下一条可用OID值

此命令用于在一条OID值被赋予后,获取下一条值。由于MIB数据库具备可推进结构,因此其值亦能够按顺序检索。使用此属性,我们可以找到树状结构内任意对象的下一对象值(以及OID标签)。

例如,我们之前已经了解了如何获取系统描述。要找出下一OID及其值,我们可以调用同一命令,但这一次使用snmpgetnext命令:

snmpgetnext authentication_infohost sysDescr.0

SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10

返回结果为该系统的ObjectID,即树状结构中的下一序列对象。我们可以重复这一过程以获取每个序列对象:

snmpgetnext authentication_infohost sysObjectID.0

DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (114216) 0:19:02.16

与之前提到的一样,这些命令也可以使用字符串OID或者数字OID。

使用SnmpWalk检索MIB结构中的特定部分

为了获取特定OID下的全部OID,大家可以使用snmpwalk命令。其会返回存在于特定点之下的完整结构树。

例如,我们可以获取system部分下的全部值:

snmpwalk authentication_infohost system

SNMPv2-MIB::sysDescr.0 = STRING: Linux target 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (126926) 0:21:09.26
SNMPv2-MIB::sysContact.0 = STRING: admin@example.com
SNMPv2-MIB::sysName.0 = STRING: target
SNMPv2-MIB::sysLocation.0 = STRING: Sitting on the Dock of the Bay
SNMPv2-MIB::sysServices.0 = INTEGER: 72
. . .

此命令会自动对主机执行SNMPgetNext请求,直到其获取到全部所请求值。

如果大家希望检索整套MIB树状结构,则需要在root上执行该命令:

snmpwalk authentication_infohost .

其会返回向用户提供的完整树状结构。

我们还可以将其与grep配合以搜索特定OID名称。例如,我们可以使用sysUpTime.0 OID以返回SNMP守护程序在远程主机上的运行时长。另外,大家也可能希望了解服务器本身的在线时长。

我们可以使用snmpwalk命令获取OID的完整结构,而后利用grep过滤以查看名称中包含“uptime”的结果。这里我们使用-i标记关闭搜索中的大小写区分:

snmpwalk authentication_infohost . | grep -i uptime

响应结果如下:

DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (113856) 0:18:58.56
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.9 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.10 = Timeticks: (0) 0:00:00.00
HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (9741455) 1 day, 3:03:34.55
NOTIFICATION-LOG-MIB::nlmLogVariableID."default".1.1 = OID: DISMAN-EVENT-MIB::sysUpTimeInstance
NET-SNMP-AGENT-MIB::nsModuleName."".8.1.3.6.1.2.1.1.3.127 = STRING: mibII/sysUpTime

在进一步检查后,我们会发现其中的hrSystemUptime.0 OID包含正确的在线时间值。现在,我们可以随意使用该OID查看设备的运行时长:

snmpget authentication_infohost hrSystemUptime.0

HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (9795352) 1 day, 3:12:33.52

可以看到,snmpwalk非常适合用于发现需要的OID值。

利用SnmpTranslate对数字与字符串OID进行翻译

另一项非常实用的工具则并不会实际与远程主机通信,相反它只是简单帮助我们发现与MIB结构相关的信息。

使用snmptranslate工具,我们可以轻松将数字结果转换为其文本表现方式:

snmptranslate 1.3.6.1.2.1.1.1.0

SNMPv2-MIB::sysDescr.0

这样一来,MIB模块能够定义该文本名称以及OID自身的名称。

我们也可以使用该工具实现另一种翻译方向。当我们找到系统正常运行时间的文本MIB时(hrSystemUptime.0),我们可以使用-On标记将其翻译为数字地址。

请记得在接收到OID信息时,一定将MIB模块包含在内:

snmptranslate -On HOST-RESOURCES-MIB::hrSystemUptime.0

.1.3.6.1.2.1.25.1.1.0

大家也可以使用这款工具获取更多其它信息。例如,使用-Td标记,我们可以获得当前路径的完整描述:

snmptranslate -Tp 1.3.6.1.2.1.1.1.0

SNMPv2-MIB::sysDescr.0
sysDescr OBJECT-TYPE
  -- FROM   SNMPv2-MIB
  -- TEXTUAL CONVENTION DisplayString
  SYNTAX    OCTET STRING (0..255) 
  DISPLAY-HINT  "255a"
  MAX-ACCESS    read-only
  STATUS    current
  DESCRIPTION   "A textual description of the entity.  This value should
        include the full name and version identification of
        the system's hardware type, software operating-system,
        and networking software."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) sysDescr(1) 0 }

大家可以修改输出结果的显示方式——使用-O_参数,其中的“_”代表需被替换为需要的输出格式。大家可以在“输出选项”章节看到完整的snmpcmd指南页面,但这里我们可以说说比较常用的几种:

Output FlagDescriptionExample

 -Oa Display in ASCII strings SNMPv2-MIB::sysDescr.0

 -Of Display full textual path to OID .iso.org.dod.internet.mgmt.mib-2.system.sysDescr.0

 -On Display full numerical path to OID .1.3.6.1.2.1.1.1.0

 -Os Display only the end textual OID representation sysDescr.0

请注意,以上输出格式调整选项也适用于本教程内提到的多数其它工具。

利用SnmpTable从格式化输出结果中检索表格数据

SNMP中保存的部分数据是以表格形式存在的。尽管snmpwalk能够显示全部相关数据,但其结构可能并不适合全部使用情况。

例如,如果我们在updTable OID上使用snmpwalk:

snmpwalk authentication_infohost udpTable

输出结果为:

UDP-MIB::udpLocalAddress.0.0.0.0.161 = IpAddress: 0.0.0.0
UDP-MIB::udpLocalAddress.0.0.0.0.35679 = IpAddress: 0.0.0.0
UDP-MIB::udpLocalPort.0.0.0.0.161 = INTEGER: 161
UDP-MIB::udpLocalPort.0.0.0.0.35679 = INTEGER: 35679

但如果使用snmptable进行检索:

snmptable authentication_infohost udpTable

则能够以表格方式显示结果:

 udpLocalAddress udpLocalPort
     0.0.0.0          161
     0.0.0.0        35679

很明显,这样更易于阅读。

利用SnmpSet实现值修改

此命令用于向OID中写入值。之前提到的各命令都负责使用信息,而此命令则负责对主机数据进行修改。

尽管snmpset命令继承大部分其它命令的语法,但我们还需要为其提供一些额外的值以实现赋值。其基本语法如下:

snmpset authentication_infohostOID_to_modifydata_typenew_value

以上大部分字段已经非常清晰,但我们需要对数据类型进行说明。每种类型都以一个字母来代表,具体如下:

  • i: 整数
  • u: 无符号整数
  • s: 字符串
  • x: 十六进制字符串
  • d: 十进制字符串
  • n: 空对象
  • o: 对象ID
  • t: 时间刻度
  • a: IP地址
  • b: Bit

由于我们已经下载了snmp-mibs-downloader软件包,因此我们大多数情况下可以使用=来替代类型标识符。

为了展示此命令,我们可以注释掉代理计算机上snmpd.conf文件中的某个值,在该配置文件内将此值指定为硬编码形式,从而防止其被普通SNMP方法所修改。

在代理计算机上打开/etc/snmp/snmpd.conf:

sudo nano /etc/snmp/snmpd.conf

注释掉sysLocation指令:

#sysLocation  Sitting on the Dock of the Bay

保存并退出。而后重启该服务:

sudo service snmpd restart

现在在管理设备上将sysLocation OID设定为“Earth”。注意,其中的“s”将数据类型指定为字符串:

snmpset authentication_infohost sysLocation.0 s "Earth"

SNMPv2-MIB::sysLocation.0 = STRING: Earth

我们可以测试=类型标识符能否正确对值类型进行设定:

snmpset authentication_infohost sysLocation.0 = "New York City"

SNMPv2-MIB::sysLocation.0 = STRING: New York City

可以看到,我们的值已经被正确解释为普通字符串。

利用SnmpBulkGet与SnmpBulkWalk高效执行请求

我们可以重复执行snmpget与snmpwalk请求,但这会造成不必要的时间浪费。

为了解决这一难题,大家应当使用snmpbulkget与snmpbulkwalk。二者能够将单一事务内的全部返回值进行打包,而非将各返回值进行单独处理。大家也可以借此一次性检索多条OID。

要使用snmpbulkget,大家需要提供一条或者多条OID或者branch,返回结果中将包含全部相关值:

snmpbulkget authentication_infohost system

SNMPv2-MIB::sysDescr.0 = STRING: Linux target 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (429891) 1:11:38.91
SNMPv2-MIB::sysContact.0 = STRING: call now
SNMPv2-MIB::sysName.0 = STRING: target
SNMPv2-MIB::sysLocation.0 = STRING: New York City
SNMPv2-MIB::sysServices.0 = INTEGER: 72
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance

需要注意的是,snmpbulkget的执行方式与snmpgetnext命令相似,这意味着其会将对象作为参数进行弃用。在以上示例中,我们并未提供特定对象,而使用了branch。大家可以将snmpbulkget视为一条snmpwalk调用,但结果将以打包形式返回。

而snmpbulkwalk命令也遵循类似的方式,即持续执行bulkget命令直到全部子树结构检索完成。

总结

如大家所见,在net-snmp套件的帮助下,我们可以通过多种方式检索并操作数据。而将操作整合为脚本或者将工具运用在应用当中,大家将能够构建起复杂的监控与管理环境。

本文来源自DigitalOcean Community。英文原文:How To Use the Net-SNMP Tool Suite To Manage and Monitor Servers By Justin Ellingwood

翻译:diradw

BM00009——|ZABBIX.v03|监控SNMP的设备/net-snmp使用/net-snmp轮询获取信息/net-snmp trap的使用| 一、SNMP概述: 简单的网络管理协议(SNMP-Simple Network Management Protocol)是一个与网络设备交互的简单方法。该规范是有IETF在1990 年五月发布的RFC 1157中定义的。 目前有SNMPv1、SNMPv2、SNMPv3三种正式版本 1.、SNMP管理协议 SNMP管理协议的5种消息类型 (1)get–request 操作:从代理进程处提取一个或多个参数值。 (2)get-next-request 操作:从代理进程处提取一个或多个 阅读详情

相关推荐

Net-SNMP 详细介绍

Net-SNMP 提供了完整的 SNMP 代理(Agent) 和 管理系统(Manager) 的实现,且可以在各种操作系统上使用,包括 Linux、Windows 和 macOS。如果你需要将 SNMP 集成到自己的应用中,Net-SNMP 提供了丰富的开发库支持,允许你编写自定义的 SNMP 客户端和代理应用。Net-SNMP 提供了一个 SNMP 代理,通常运行在网络设备(如服务器、交换机、路由器)上,负责暴露设备的管理信息并响应 SNMP 管理系统的请求。代理通常是通过 snmpd 进程来实现的。

jjjxxxhhh123的博客 1942

net-snmp监控工具

snmp 的使用和配置

w12563489的博客 1539

利用SNMP代理做服务器性能监控

本文属于原创,如果转载,请写明作者以及出处,谢谢。 SNMP协议使得我们可以利用远程的方式来监控服务器的运行状况(例如CPU负载、磁盘使用情况、内存消耗等等)。 目前国内比较稳定的性能监控提供者是“监控宝”,我这里稍微记录了一下如何使用监控宝来监控服务器性能。 PS

zouyongjin的专栏 2284

Net-Snmp工具(学习SNMP的工具,开源项目)简单使用

https://blog.csdn.net/mrzhangzifu/article/details/77882371Net-Snmp工具的安装与配置操作系统:Ubuntu16.4软件版本:net-snmp 5.7.3安装:首先我们要安装下面三个安装包:snmpd:snmp服务端软件snmp:snmp客户端软件snmp-mibs-downloader:用来下载更新本地mib库的软件注:在...

weixin_30553837的博客 542

NO.B.0009——>监控SNMP的设备/net-snmp使用/net-snmp轮询获取信息/net-snmp trap的使用

一、SNMP概述: 简单的网络管理协议(SNMP-Simple Network Management Protocol)是一个与网络设备交互的简单方法。该规范是有IETF在1990 年五月发布的RFC 1157中定义的。 目前有SNMPv1、SNMPv2、SNMPv3三种正式版本 1.、SNMP管理协议 SNMP管理协议的5种消息类型 (1)get–request ...

yanqi_vip 456

Linux SNMP监控实战:从Net-SNMP安装到Zabbix/Prometheus集成

SNMP(简单网络管理协议)是网络与设备监控领域的标准协议,它通过定义统一的MIB(管理信息库)和OID(对象标识符)体系,实现了对异构IT基础设施(如服务器、交换机、防火墙)运行状态的标准化采集。其核心原理基于Manager/Agent架构,通过轻量级的UDP轮询和Trap事件上报机制,高效获取CPU、内存、磁盘、网络流量等关键性能指标。该技术的核心价值在于解决了多厂商设备监控的碎片化问题,为构建集中、自动化的运维监控平台提供了数据基础。在应用场景上,SNMP广泛用于IT基础设施的性能监控、容量规划、故障

weixin_33423874的博客 313

基于Net-SNMP的Agent的开发和使用

基于Net-SNMP的Agent的开发和使用 一.背景技术及术语解释 Net-SNMP是一个免费的、开放源码的SNMP实现,其中包含了一个Agent模块,通过这个模块可以获取到服务器的相关信息;在源码中实现了对服务器部分信息的获取,我们同样可以通过扩展mib库文件来实现获取我们需要的服务器的信息和管理服务器。 二.方案详细描述 1. Agent扩展方法简介 1.1添加自定义mib文件

zengrui_ops的博客 2988

利用脚本扩展snmp收集信息

snmp开发小记 最近公司需要开发一个适用于自己集群的监控软件,在调研了ganlia等监控工具后,决定采用snmp+rrd+MySQL的方式来完成节点数据的采集和存储工作。本人主要负责snmp,下文会主要涉及: snmpd.conf简单配置一个基于snmp4j的snmp manager实现通过shell脚本的方式扩展agent采集自身所需要的信息。 其实snmp还有一个很重要的trap功

星星灿灿的笔记 4934

zabbix使用snmp监控(亲测)

zabbix使用snmp监控 snmpwalk是SNMP的一个工具,它使用SNMP的GETNEXT请求查询指定OID(SNMP协议中的对象标识)入口的所有OID树信息,并显示给用户。通过snmpwalk也可以查看支持SNMP协议(简单网络管理协议)的设备的一些其他信息,比如交换机或路由器IP地址、内存使用率等,也可用来协助开发SNMP功能。 在日常监控中,经常会用到snmp服务,而snmpwalk...

weixin_43287508的博客 1万+

Perl实现net-snmp子代理的完整指南

net-snmp是一套包含客户端和服务器端的完整工具集,广泛用于网络设备的管理和监控。它的核心组件可以划分为几个部分:snmpd守护进程、命令行工具以及开发库。snmpd是一个运行在网络设备上的后台服务,用于处理SNMP请求并管理本地信息库(MIB)。命令行工具提供了丰富的选项,可以从系统外部执行查询和配置任务。开发库则为编写自定义管理应用提供了丰富的API接口。snmpd守护进程。

weixin_42515842的博客 895

基于SNMP的网络监控系统设计与实战

SNMP采用基于UDP的请求-响应模式,构建了管理站(Manager)与代理(Agent)之间的轻量级通信架构。Manager通过发送GET、SET等操作指令获取或修改Agent维护的设备状态信息,而Agent则监听161端口接收查询,并通过TRAP或INFORM报文异步上报重大事件至Manager的162端口。该模型依赖MIB(管理信息库)作为数据抽象接口,所有可监控参数如接口状态、CPU利用率等均以OID形式组织在树形结构中。UDP传输虽提升效率,但也带来可靠性挑战,需上层机制补偿丢包风险。

weixin_42611177的博客 1109

Net-SNMP:强大的网络管理工具

Net-SNMP:强大的网络管理工具 项目介绍 Net-SNMP是一个功能强大的开源网络管理工具包,最初基于CMU的2.1.2.1 SNMP代码开发。经过多年的发展,Net-SNMP已经进行了大量的修改、重构、增强和修复,与最初的CMU代码相比,几乎面目全非。该项目在1995年从cmu-snmp更名为ucd-snmp,并在2000年再次更名为net-snmp。Net-SNMP不仅提供了完整的SNM...

gitblog_00803的博客 1543

net_snmp库网络管理工具实战演练

SNMP让网络管理员能够监控网络设备的状态,并调整这些设备的配置。它基于代理(Agent)和管理站(Manager)模型,使用一组预定义的操作来查询和修改设备的MIB(管理信息基础)数据。net-snmp是一个功能强大的开源库,用于实现简单网络管理协议(SNMP)的支持。SNMP被广泛应用于网络设备和服务器的监控、配置和管理。net-snmp既包含命令行工具,也提供了一整套的库函数供开发者在自己的程序中使用SNMP功能。

weixin_36431814的博客 827

Zabbix使用SNMP方式监控Linux

Zabbix使用SNMP方式监控Linux SNMP简介 简单网络管理协议(SNMP)是TCP/IP协议簇的一个应用层协议,工作在UDP 161端口,用于监控目标设备的操作系统、硬件设备、服务应用、软硬件配置、网络协议状态、设备性能及资源利用率、设备报错事件信息、应用程序状态等软硬件信息。 我们现在开始使用snmp方式监控linux服务器 yum install net-snmp net-snmp...

叱咤少帅的博客 5271

Linux下net-snmp-5.7.1安装与配置实战指南

net-snmp(Net-Simple Network Management Protocol)是一个开源的网络管理工具集,广泛应用于Linux系统中,为实现网络设备的监控、管理与性能数据采集提供了标准化支持。它不仅完整实现了SNMP协议族(包括SNMPv1、SNMPv2c、SNMPv3),还提供了丰富的命令行工具和守护进程(如snmpdsnmptrapd),便于系统管理员进行远程监控和告警通知。

weixin_29940495的博客 1252

STC51单片机串口多字节数据接收的优化策略

本文深入探讨了STC51单片机串口多字节数据接收的优化策略。针对数据丢包、粘包等常见痛点,核心思路是采用“缓冲队列+定时器超时”模式,将实时处理转变为“先收纳,后处理”。文章详细讲解了硬件初始化、中断服务程序优化(快速入队与激活超时裁判)以及主循环的非阻塞设计,并进阶介绍了环形缓冲区实现与错误处理,旨在构建稳定可靠的串口通信系统。

weixin_29264201的博客 374

Zabbix监控系统系列之十二:SNMP Traps主动告警

SNMPTrap监控主要用于设备发生故障时的主动通知的监控,比如存储监控硬盘故障、网络监控抖动; 整个流程说明大体如下: 1.监控对象发送SNMPTrap信息到snmptrapd(Net-SNMP)服务器, 2.snmptrapd服务器将接收到的SNMPTrap信息发送给SNMPTT(或者Perl trap receiver), 3.SNMPTT(或者Perl trap receiver)将按照...

Eric.zhong 1万+

R语言实战:从Raw Counts到TPM/FPKM的完整转换指南(含代码调试技巧)

本文详细介绍了在R语言环境中将RNA-seq原始计数(raw counts)转换为TPM/FPKM值的完整流程,包含代码实现和常见错误调试技巧。通过具体案例演示如何正确处理基因长度和测序深度因素,实现表达量标准化,为生物信息学分析提供可靠数据基础。特别适合需要进行转录组数据分析的研究人员和实验室技术人员参考。

weixin_28559803的博客 481

snmp编程

一、SNMP简介 SNMP是一构建在TCP/UDP上的远程监控应用。它能监控网络中主机的各种信息,如内存使用率,CPU占用率,磁盘占用率等。它主要分为2个部分,安装在待监控主机上的SNMP服务端,用于收集主机的信息,并按树形进行组织;安装在监控端的SNMP客户端,实时发出查询命令,获得被监控主机的运行信息。 SNMP服务端:将主机信息按树形进行组织,有点类似windows的注册表,但是简单得多

逆风而行 1万+

Scratch 3.0角色控制避坑指南:为什么你的键盘移动总卡顿?

本文深入剖析了Scratch 3.0中角色移动卡顿的根本原因,指出依赖`当按下`事件积木的局限性。通过对比分析,推荐采用`重复执行`结合`如果<键被按下?>`的循环控制方案,并引入速度变量模拟惯性,从而实现流畅、实时的键盘控制优化,显著提升游戏操作体验。

dd012的博客 1015

主流双目相机技术参数横向评测:从ZED到INDEMIND的深度解析

本文对主流双目相机进行了深度横向评测,涵盖ZED、Bumblebee、Leap Motion、DUO 3D及INDEMIND等国内外产品。文章详细解析了分辨率、帧率、视场角、基线等核心参数,并结合科研、机器人导航、无人机、工业检测等典型应用场景,提供了实战选型指南,帮助读者根据具体需求挑选最合适的双目视觉解决方案。

weixin_29212867的博客 642

net-snmp在Linux下的安装过程【转】

http://mxdxm.iteye.com/blog/509141

cchao的专栏 2754

Codex 自定义模型操作指南:CLI 与桌面客户端双端实操

检查版本 codex --version # 预期输出类似:codex-cli 0.133.0-alpha.1 # 如未安装 npm install -g @openai/codex假设你要接入DeepSeek,在# 临时设置(当前终端会话有效)export DEEPSEEK_API_KEY="sk-你的 DeepSeek API Key"# 永久设置(推荐,写入 shell 配置)

篮球界最会写bug的人;程序猿中打球最菜的人。 456
上一篇: 如何在Ubuntu 14.04上安装并配置SNMP守护程序与客户端
下一篇: 如何在Web服务器中利用Apache JMeter执行负载测试
普通网友
博客等级 码龄10年 769粉丝 269原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值