Re: Re: bash script - extend - output as integer

Paul Herring <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <CAEWO_9QbtHQhHE6ihzNmzFx5yK+6jOBeuy-CQTY9yaMH_9O27Q@mail.gmail.com>
On Tue, Apr 21, 2020 at 8:14 PM Dennis Schneck <[email protected]> wrote:

>
> Hello Paul,
> thanks but exit code only max 255 (or I am wrong?) but I need 4 digets for
> example 9999
> so is there another way ?
>

From the same link:

> Integer exit codes are limited to a range of 0–255. For values that are
likely to exceed 256, either use the standard output of the script (which
will be typed as a string) or a different method of extending the agent.

So. Your options are
- use STRING anyway (their first suggestion)
- don't use extend and write a proper agent (their second)
- old-skool - use scaled integers, where 0 represents - er - 0. And 255
represents (to pick your example) 9999 - quick example of this third:

---
#!/bin/bash -u
val=${1:-0}
scaled=$((255*val/9999))
exit ${scaled}
---
$ for x in 1 10 39 40 41 250 500 5000 7500 9999; do ./scaled.sh ${x}; echo
"${x} -> $?"; done
1 -> 0
10 -> 0
39 -> 0
40 -> 1
41 -> 1
250 -> 6
500 -> 12
5000 -> 127
7500 -> 191
9999 -> 255
----

Note each unit of output represents a range of about 40 input units. If you
can 'tighten' that 0-9999 range it may improve, bur your granularity is
still stuck to 256 values.

Out of range numbers go silly with that specific script - you'd need error
checking:

$ for x in 10000 20000 30000 40000; do ./scaled.sh ${x}; echo "${x} -> $?";
done
10000 -> 255
20000 -> 254
30000 -> 253
40000 -> 252



> *Gesendet:* Dienstag, 21. April 2020 um 15:36 Uhr
> *Von:* "Paul Herring" <[email protected]>
> *An:* "Dennis Schneck" <[email protected]>
> *Cc:* [email protected]
> *Betreff:* Re: bash script - extend - output as integer
>
> https://docs.fedoraproject.org/en-US/Fedora/18/html/System_Administrators_Guide/sect-System_Monitoring_Tools-Net-SNMP-Extending.html
>
> > Note that the exit code (“8” in this example) is provided as an INTEGER
> type and any output is provided as a STRING type.
>
> You want get_TempOfRoom1.sh to exit (the return code) with the value you
> want in the INTEGER, not echo it out.
>
> On Tue, Apr 21, 2020 at 1:56 PM Dennis Schneck <[email protected]>
> wrote:
>
>>
>> Hello,
>> how to get an integer value from a bash script if using "extend" in
>> /etc/snmp/snmpd.conf ?
>>
>> extend TempOfRoom1 /scripts/get_TempOfRoom1.sh
>>
>> got only STRING but no INTEGER
>>
>>
>> NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."TempOfRoom1" = STRING: 2210
>>
>>
>> like to get:
>>
>> NET-SNMP-EXTEND-MIB::nsExtendResult."TempOfRoom1" = INTEGER: 2210 insted
>> of "NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."TempOfRoom1" = STRING: 2210
>> "
>>
> --
PJH

_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.