Solved

bash script to run two commands and return single value

Posted on 2010-09-14
8
1,684 Views
Last Modified: 2013-12-21
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


#!/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))

Open in new window

0
Comment
Question by:that1guy15
8 Comments
 
LVL 84

Expert Comment

by:ozo
ID: 33678128
good=`$totalokconnects  | awk '{print $4}'`
0
 
LVL 48

Expert Comment

by:Tintin
ID: 33678634

good=$(echo $totalokconnects  | awk '{print $4}')
total=$(echo $totalstreamattempts | awk '{print $4}')

Open in new window

0
 
LVL 18

Expert Comment

by:TobiasHolm
ID: 33680301
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:
#!/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))

Open in new window

0
What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

 
LVL 84

Expert Comment

by:ozo
ID: 33680323
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.126.6.0'
not on
totalokconnects=`snmpwalk -v 1 -c public 10.0.0.19 .1.3.6.1.4.1.1971.6.2.9.126.6.0`
0
 
LVL 84

Accepted Solution

by:
ozo earned 500 total points
ID: 33680338
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.126.6.0`)
good=${totalokconnects[3]}
0
 
LVL 18

Expert Comment

by:TobiasHolm
ID: 33680348
>I based it on totalokconnects='snmp...

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))

Open in new window

0
 
LVL 18

Expert Comment

by:TobiasHolm
ID: 33680372
>although an easier way might be...

Yes, and create an string array instead. Much more elegant solution ozo!
0
 
LVL 23

Author Comment

by:that1guy15
ID: 33686683
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.126.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!
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article will explain how to establish a SSH connection to Ubuntu through the firewall and using a different port other then 22. I have set up a Ubuntu virtual machine in Virtualbox and I am running a Windows 7 workstation. From the Ubuntu vi…
Background Still having to process all these year-end "csv" files received from all these sources (including Government entities), sometimes we have the need to examine the contents due to data error, etc... As a "Unix" shop, our only readily …
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…
How to Install VMware Tools in Red Hat Enterprise Linux 6.4 (RHEL 6.4) Step-by-Step Tutorial

680 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question