/* gcc -o p p.c -Wall -O2 -lsnmp */ /* Ben Winslow */ /* 5-minute hack. don't blame me. */ #define DISPLAYLEN 16 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { struct snmp_session sessioninfo, *s; struct snmp_pdu *pdu, *response; oid thisoid[MAX_OID_LEN]; size_t thisoidlen; char buf[512]; char *str; int strpos = 0; SOCK_STARTUP; memset(&sessioninfo, 0, sizeof(sessioninfo)); snmp_parse_args(argc, argv, &sessioninfo, NULL, NULL); if (!(s = snmp_open(&sessioninfo))) { snmp_sess_perror("snmpset", &sessioninfo); SOCK_CLEANUP; return 1; } str = argv[6]; /* ick */ thisoidlen = MAX_OID_LEN; if (!(snmp_parse_oid(".1.3.6.1.4.1.11.2.3.9.4.2.1.1.2.37.1.1.0", thisoid, &thisoidlen))) { snmp_perror(".1.3.6.1.4.1.11.2.3.9.4.2.1.1.2.37.1.1.0!!"); return 1; } for (;;) { if (!(pdu = snmp_pdu_create(SNMP_MSG_SET))) { snmp_perror("snmp_pdu_create()"); return 1; } strncpy(buf, str + strpos, DISPLAYLEN); snmp_add_var(pdu, thisoid, thisoidlen, 's', buf); printf("Out: %s\n", buf); strpos++; snmp_synch_response(s, pdu, &response); if (response) snmp_free_pdu(response); if (strpos == 1) usleep(1000000); else usleep(150000); if (strpos >= strlen(str)) break; } return 0; }