Esempio n. 1
0
func methodStreamWalk(s *gosnmp.GoSNMP, oid string) {
	fmt.Printf("methodStreamWalk: %v\n", oid)
	s.SetErrorDelayMs(cmdRetryDelayMs)
	s.SetRetryCnt(cmdRetryLimit)
	resChn, err := s.StreamWalk(oid, cmdDupFilterSize)
	if err != nil {
		fmt.Printf("Error getting response: %s\n", err.Error())
	} else {
		idx := 0
		for resp := range resChn {
			if resp.Err != nil {
				fmt.Printf("Error: %v\n", resp.Err)
			} else {
				idx += 1
				if oid, err := parseOID(resp.PDU.Name); err == nil {
					if prefix, suffix, err := TranslateOIDFromCache(oid); err == nil {
						fmt.Printf("StreamWalk: (%d) prefix: %s, suffix: %s -> value: %v\n", idx, prefix, suffix, resp.PDU.Value)
					} else if prefix != "" {
						fmt.Printf("StreamWalk: (%d) prefix: %s, suffix: ---, err: %v -> value: %v\n", idx, prefix, err, resp.PDU.Value)
					} else {
						fmt.Printf("StreamWalk: (%d) oid: %v -> value: %v  err: %v\n", idx, resp.PDU.Name, resp.PDU.Value, err)
					}
				} else {
					fmt.Printf("StreamWalk: ERROR: %v\n", err)
				}
			}
		}
	}
}