that1guy15
asked on
bash script to run two commands and return single value
Hey all, Im not good at scripting but im trying to run two snmpget commands (lets say snmp1 and snmp2) aginst a server with a bash script. Then I want to take snmp1 and subtract it from snmp2 and display the results. Im running into an issue with this.
The snmpget commands return a string that contains the OID path and then the value at the end. Im trying to parse out only the value to a variable. The parsing works fine but i can't figure out how to get the values assigned to the variables. Im using awk (also tried cut) to parse and it always prints instead of assigning to the variable.
Im sure im missing something small but Im totally lost.
Could someone help me out with my code or suggest a better way to do this?
Thanks
The snmpget commands return a string that contains the OID path and then the value at the end. Im trying to parse out only the value to a variable. The parsing works fine but i can't figure out how to get the values assigned to the variables. Im using awk (also tried cut) to parse and it always prints instead of assigning to the variable.
Im sure im missing something small but Im totally lost.
Could someone help me out with my code or suggest a better way to do this?
Thanks
#!/bin/bash
totalokconnects='snmpwalk -v 1 -c public 10.0.0.19 .1.3.6.1.4.1.1971.6.2.9.126.6.0'
totalstreamattempts='snmpwalk -v 1 -c public 10.0.0.19 .1.3.6.1.4.1.1971.6.2.9.126.7.0'
good=$totalokconnects | awk '{print $4}'
total=$totalstreamattempts | awk '{print $4}'
totalerrors=$(($total-$good))
good=`$totalokconnects | awk '{print $4}'`
good=$(echo $totalokconnects | awk '{print $4}')
total=$(echo $totalstreamattempts | awk '{print $4}')
Hi!
You have wrong type of "fnutts" on line 4 and 5 (you need to execute those lines as commands).
And ozo forgot the echo command.
A working script:
You have wrong type of "fnutts" on line 4 and 5 (you need to execute those lines as commands).
And ozo forgot the echo command.
A working script:
#!/bin/bash
totalokconnects=`snmpwalk -v 1 -c public 10.0.0.19 .1.3.6.1.4.1.1971.6.2.9.126.6.0`
totalstreamattempts=`snmpwalk -v 1 -c public 10.0.0.19 .1.3.6.1.4.1.1971.6.2.9.126.7.0`
good=`echo $totalokconnects | awk '{print $4}'`
total=`echo $totalstreamattempts | awk '{print $4}'`
totalerrors=$(($total-$good))
I did not forget the echo command,
I based it on
totalokconnects='snmpwalk -v 1 -c public 10.0.0.19 .1.3.6.1.4.1.1971.6.2.9.12 6.6.0'
not on
totalokconnects=`snmpwalk -v 1 -c public 10.0.0.19 .1.3.6.1.4.1.1971.6.2.9.12 6.6.0`
I based it on
totalokconnects='snmpwalk -v 1 -c public 10.0.0.19 .1.3.6.1.4.1.1971.6.2.9.12
not on
totalokconnects=`snmpwalk -v 1 -c public 10.0.0.19 .1.3.6.1.4.1.1971.6.2.9.12
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
>I based it on totalokconnects='snmp...
aah! I see! Then that version also works!! Multiple ways of the same result!! :)
ozo's version:
aah! I see! Then that version also works!! Multiple ways of the same result!! :)
ozo's version:
#!/bin/bash
totalokconnects='snmpwalk -v 1 -c public 10.0.0.19 .1.3.6.1.4.1.1971.6.2.9.126.6.0'
totalstreamattempts='snmpwalk -v 1 -c public 10.0.0.19 .1.3.6.1.4.1.1971.6.2.9.126.7.0'
good=`$totalokconnects | awk '{print $4}'`
total=`$totalstreamattempts | awk '{print $4}'`
totalerrors=$(($total-$good))
>although an easier way might be...
Yes, and create an string array instead. Much more elegant solution ozo!
Yes, and create an string array instead. Much more elegant solution ozo!
ASKER
Sorry for taking so long to get back. I have been working on other projects.
The first two recommendations didnt work but ozo's second recommendation did
>although an easier way might be
totalokconnects=(`snmpwalk -v 1 -c public 10.0.0.19 .1.3.6.1.4.1.1971.6.2.9.12 6.6.0`)
good=${totalokconnects[3]}
Took me a little bit to realize you were using ` instead of '. I thought i had good eyes but i guess not :)
Thanks for the help!
The first two recommendations didnt work but ozo's second recommendation did
>although an easier way might be
totalokconnects=(`snmpwalk
good=${totalokconnects[3]}
Took me a little bit to realize you were using ` instead of '. I thought i had good eyes but i guess not :)
Thanks for the help!