使用net-snmp API程式設計(轉)
使用net-snmp API程式設計(轉)[@more@] 在一個專案中使用了Redback SMS10000 的接入伺服器,作為附加要求,需要做一個snmp的介面程式,目的是起傳送一個subscriber reauth 的 snmp 包給接入伺服器; 由於snmp的例程相對較少,所以在此截選程式中的snmp 相關部分以後,做一個註腳,記錄下來。 程式使用了net-snmp 的API,所以系統要預先安裝net-snmp; 編譯時需要使用帶入netsnmp的行命令:gcc -o redweb redweb.c -lkstat -lm -lsocket -ladm -lnetsnmp -lcrypto 不要更多羅嗦了,都寫在程式裡了。所謂知識無價值。static char snmpreauth[]=".1.3.6.1.4.1.2352.2.14.1.2.1.1.";struct snmp_session session, *ss;struct snmp_pdu *response;struct snmp_pdu *pdu;char snmpcommunity[32];char snmpstr[256];char tmpstr[128];char *endptr;oid name[512];int name_length;int cnt,id=0;int snmpsetvalue=1;init_mib();add_mibdir("/opt/weblogin/mibs");// include Redback Mibs filesnmp_sess_init(&session);session.version=SNMP_VERSION_1;session.peername=strdup(data.nas_address);session.community=strdup(snmpcommunity);session.community_len=strlen(session.community);session.retries=0;session.timeout=12000;session.sessid=strtol(data.timeid, &endptr, 0);SOCK_STARTUP;/* Macro* open an SNMP session*/ss = snmp_open(&session);if (ss == NULL) {/** diagnose snmp_open errors with the input netsnmp_session pointer*/snmp_sess_perror("snmptable", &session);SOCK_CLEANUP;}/** create PDU for SET request and add object names and values to request*/pdu = (struct snmp_pdu *)snmp_pdu_create(SNMP_MSG_SET);if(pdu==NULL){printf("Unable to create the pdu");}sprintf(snmpstr,"%s17",snmpreauth);for(cnt=0;cnt<17;cnt++){sprintf(tmpstr,".%d",(char *)data.session_id[cnt]);// data.session_id MAC format stringstrcat(snmpstr,tmpstr);}//FIXMEname_length=512;if(!read_objid(snmpstr,name,&name_length)) {printf("Error in read_objid");exit(1);};snmp_pdu_add_variable(pdu,name,name_length,ASN_INTEGER,&snmpsetvalue,sizeof(snmpsetvalue));status = snmp_synch_response(ss, pdu, &response);// sync snmpif (status == STAT_SUCCESS) {if (response->errstat == SNMP_ERR_NOERROR) {}exitval = 2;} else if (status == STAT_TIMEOUT) {fprintf(stderr, "SNMP Timeout: No Response from %s",session.peername);exitval = 1;} else {snmp_sess_perror("snmpset", ss);printf("snmp session else");exitval = 1;}if (response)snmp_free_pdu(response);snmp_close(ss);SOCK_CLEANUP;/* Macro off* final a snmp session*/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-944723/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- VB的API程式設計精粹(1) (轉)API程式設計
- VB的API程式設計精粹(二) (轉)API程式設計
- RESTful API 設計指南【轉】RESTAPI
- 淺談Windows API程式設計WindowsAPI程式設計
- 玩轉 PHP 網路程式設計全套之 socket 選項設定 APIPHP程式設計API
- 程式設計師們都在推薦使用的API介面大全程式設計師API
- 使用Microsoft Agent的COM介面程式設計(轉)ROS程式設計
- LinuxC程式設計---make命令的使用(轉)LinuxC程式程式設計
- 基本TCP套接字程式設計APITCP程式設計API
- The MySQL C API程式設計例項MySqlAPI程式設計
- 多程式程式設計 (轉)程式設計
- 多程式程式設計(轉)程式設計
- 提升開發效率,程式設計師都在使用的免費api程式設計師API
- 【重磅來襲】程式設計師都在使用的免費API 介面程式設計師API
- Go實戰 21 | 網路程式設計:玩轉 RESTful API 服務Go程式設計RESTAPI
- 使用Python玩轉WMI進行Win32api/com進行Windows程式設計開發PythonWin32APIWindows程式設計
- Linux 程式設計之Shell程式設計(轉)Linux程式設計
- Pcap程式設計(轉)PCA程式設計
- shell程式設計(轉)程式設計
- 程式設計之路 (轉)程式設計
- 如果今天沒有API介面,今天的程式設計師如何程式設計?API程式設計師
- 程式設計使用WMI 控制連線屬性 (轉)程式設計
- liunx程式設計之const使用詳解(轉)程式設計
- XML 程式設計思想:使用 XSLT 生成 RDF(轉)XML程式設計
- 設計Go API的管道使用原則GoAPI
- 呼叫API函式設計ABOUT視窗 (轉)API函式
- 玩轉 PHP 網路程式設計全套之多程式程式設計PHP程式設計
- Delphi之快速設計(程式設計篇) (轉)程式設計
- EJB 程式設計模型 (轉)程式設計模型
- 魔方遊戲程式設計 (轉)遊戲程式設計
- bash 程式設計指南(轉)程式設計
- 使用Java開始物件導向的程式設計(轉)Java物件程式設計
- 使用NET-SNMP和MRTG監測Windows伺服器(zt)Windows伺服器
- Windows API視窗程式設計 - 空白視窗WindowsAPI程式設計
- 程式設計師必看:免費好用的api程式設計師API
- 程式設計師朋友推薦的好用API程式設計師API
- Lotus Notes/Domino 的C API程式設計API程式設計
- 調 用API 函 數 設 計ABOUT 窗 口 (轉)API