func parseArgs() (*snmpgo.Arguments, []string) { flag.Usage = func() { if errMessage != "" { fmt.Fprintf(os.Stderr, "%s\n", errMessage) } fmt.Fprintf(os.Stderr, "Usage of %s: [OPTIONS] AGENT OID [OID]..\n\n", os.Args[0]) fmt.Fprintf(os.Stderr, "AGENT:\n hostname:port or ip-address:port\n") fmt.Fprintf(os.Stderr, "OPTIONS:\n") flag.PrintDefaults() } protocol := flag.String("p", "udp", "Protocol (udp|udp6|tcp|tcp6)") timeout := flag.Uint("t", 5, "Request timeout (number of seconds)") retries := flag.Uint("r", 1, "Number of retries") version := flag.String("v", "2c", "SNMP version to use (2c|3)") community := flag.String("c", "", "Community") username := flag.String("u", "", "Security name") seclevel := flag.String("l", "NoAuthNoPriv", "Security level (NoAuthNoPriv|AuthNoPriv|AuthPriv)") authproto := flag.String("a", "", "Authentication protocol (MD5|SHA)") authpass := flag.String("A", "", "Authentication protocol pass phrase") privproto := flag.String("x", "", "Privacy protocol (DES|AES)") privpass := flag.String("X", "", "Privacy protocol pass phrase") secengine := flag.String("e", "", "Security engine ID") contextengine := flag.String("E", "", "Context engine ID") contextname := flag.String("n", "", "Context name") flag.IntVar(&nonRepeaters, "Cn", 0, "Non repeaters") flag.IntVar(&maxRepetitions, "Cr", 10, "Max repetitions") flag.Parse() args := &snmpgo.Arguments{ Network: *protocol, Address: flag.Arg(0), Timeout: time.Duration(*timeout) * time.Second, Retries: *retries, Community: *community, UserName: *username, AuthPassword: *authpass, AuthProtocol: snmpgo.AuthProtocol(*authproto), PrivPassword: *privpass, PrivProtocol: snmpgo.PrivProtocol(*privproto), SecurityEngineId: *secengine, ContextEngineId: *contextengine, ContextName: *contextname, } switch *version { case "2c": args.Version = snmpgo.V2c case "3": args.Version = snmpgo.V3 default: usage(fmt.Sprintf("Illegal Version, value `%s`", *version), 2) } switch *seclevel { case "NoAuthNoPriv": args.SecurityLevel = snmpgo.NoAuthNoPriv case "AuthNoPriv": args.SecurityLevel = snmpgo.AuthNoPriv case "AuthPriv": args.SecurityLevel = snmpgo.AuthPriv default: usage(fmt.Sprintf("Illegal SecurityLevel, value `%s`", *seclevel), 2) } return args, flag.Args() }
func parseArgs() (*snmpgo.Arguments, []string) { flag.Usage = func() { if errMessage != "" { fmt.Fprintf(os.Stderr, "%s\n", errMessage) } fmt.Fprintf(os.Stderr, "Usage of %s: [OPTIONS] AGENT UPTIME TRAP-OID [OID TYPE VALUE]..\n\n", os.Args[0]) fmt.Fprintf(os.Stderr, "AGENT:\n hostname:port or ip-address:port\n") fmt.Fprintf(os.Stderr, "UPTIME:\n system uptime\n") fmt.Fprintf(os.Stderr, "TYPE:\n") fmt.Fprintf(os.Stderr, " i - INTEGER u - UNSIGNED c - COUNTER32 C - COUNTER64\n") fmt.Fprintf(os.Stderr, " t - TIMETICKS a - IPADDRESS o - OID n - NULL\n") fmt.Fprintf(os.Stderr, " s - STRING x - HEX STRING d - DECIMAL STRING\n") fmt.Fprintf(os.Stderr, "OPTIONS:\n") flag.PrintDefaults() } protocol := flag.String("p", "udp", "Protocol (udp|udp6|tcp|tcp6)") timeout := flag.Uint("t", 5, "Request timeout (number of seconds)") retries := flag.Uint("r", 1, "Number of retries") version := flag.String("v", "2c", "SNMP version to use (2c|3)") community := flag.String("c", "", "Community") username := flag.String("u", "", "Security name") seclevel := flag.String("l", "NoAuthNoPriv", "Security level (NoAuthNoPriv|AuthNoPriv|AuthPriv)") authproto := flag.String("a", "", "Authentication protocol (MD5|SHA)") authpass := flag.String("A", "", "Authentication protocol pass phrase") privproto := flag.String("x", "", "Privacy protocol (DES|AES)") privpass := flag.String("X", "", "Privacy protocol pass phrase") secengine := flag.String("e", "", "Security engine ID") contextengine := flag.String("E", "", "Context engine ID") contextname := flag.String("n", "", "Context name") flag.BoolVar(&inform, "Ci", false, "Send an Inform") flag.Parse() args := &snmpgo.Arguments{ Network: *protocol, Address: flag.Arg(0), Timeout: time.Duration(*timeout) * time.Second, Retries: *retries, Community: *community, UserName: *username, AuthPassword: *authpass, AuthProtocol: snmpgo.AuthProtocol(*authproto), PrivPassword: *privpass, PrivProtocol: snmpgo.PrivProtocol(*privproto), SecurityEngineId: *secengine, ContextEngineId: *contextengine, ContextName: *contextname, } switch *version { case "2c": args.Version = snmpgo.V2c case "3": args.Version = snmpgo.V3 default: usage(fmt.Sprintf("Illegal Version, value `%s`", *version), 2) } switch *seclevel { case "NoAuthNoPriv": args.SecurityLevel = snmpgo.NoAuthNoPriv case "AuthNoPriv": args.SecurityLevel = snmpgo.AuthNoPriv case "AuthPriv": args.SecurityLevel = snmpgo.AuthPriv default: usage(fmt.Sprintf("Illegal SecurityLevel, value `%s`", *seclevel), 2) } return args, flag.Args() }
func parseArgs() (*snmpgo.SNMPArguments, []string) { flag.Usage = func() { if errMessage != "" { fmt.Fprintf(os.Stderr, "%s\n", errMessage) } fmt.Fprintf(os.Stderr, "Usage of %s: [OPTIONS] AGENT [DELAY [COUNT]]\n\n", os.Args[0]) fmt.Fprintf(os.Stderr, "AGENT:\n hostname:port or ip-address:port\n") fmt.Fprintf(os.Stderr, "DELAY:\n the delay between updates in seconds (default: 10)\n") fmt.Fprintf(os.Stderr, "COUNT:\n the number of updates (default: infinity)\n") fmt.Fprintf(os.Stderr, "OPTIONS:\n") flag.PrintDefaults() } protocol := flag.String("p", "udp", "Protocol (udp|udp6|tcp|tcp6)") timeout := flag.Uint("t", 5, "Request timeout (number of seconds)") retries := flag.Uint("r", 1, "Number of retries") version := flag.String("v", "2c", "SNMP version to use (2c|3)") community := flag.String("c", "", "Community") username := flag.String("u", "", "Security name") seclevel := flag.String("l", "NoAuthNoPriv", "Security level (NoAuthNoPriv|AuthNoPriv|AuthPriv)") authproto := flag.String("a", "", "Authentication protocol (MD5|SHA)") authpass := flag.String("A", "", "Authentication protocol pass phrase") privproto := flag.String("x", "", "Privacy protocol (DES|AES)") privpass := flag.String("X", "", "Privacy protocol pass phrase") secengine := flag.String("e", "", "Security engine ID") contextengine := flag.String("E", "", "Context engine ID") contextname := flag.String("n", "", "Context name") ifRegString := flag.String("ifreg", "", "Regular expression that specifies the interface") flag.IntVar(&maxRepetitions, "Cr", 10, "Max repetitions") flag.BoolVar(&noHeader, "noheader", false, "Disable header line") flag.Parse() args := &snmpgo.SNMPArguments{ Network: *protocol, Address: flag.Arg(0), Timeout: time.Duration(*timeout) * time.Second, Retries: *retries, Community: *community, UserName: *username, AuthPassword: *authpass, AuthProtocol: snmpgo.AuthProtocol(*authproto), PrivPassword: *privpass, PrivProtocol: snmpgo.PrivProtocol(*privproto), SecurityEngineId: *secengine, ContextEngineId: *contextengine, ContextName: *contextname, } switch *version { case "2c": args.Version = snmpgo.V2c case "3": args.Version = snmpgo.V3 default: usage(fmt.Sprintf("Illegal Version, value `%s`", *version), 2) } switch *seclevel { case "NoAuthNoPriv": args.SecurityLevel = snmpgo.NoAuthNoPriv case "AuthNoPriv": args.SecurityLevel = snmpgo.AuthNoPriv case "AuthPriv": args.SecurityLevel = snmpgo.AuthPriv default: usage(fmt.Sprintf("Illegal SecurityLevel, value `%s`", *seclevel), 2) } if *ifRegString != "" { var err error if ifRegexp, err = regexp.Compile(*ifRegString); err != nil { usage(fmt.Sprintf("Illegal Regular expression - %s", err), 2) } } return args, flag.Args() }