Using arguments


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Using arguments
# 1  
Old 10-31-2011
Using arguments

I have a SNMP agent that sends three arguments to the script to get a value at the end. The first is the LeafNumber, second is the request type (SET, GET, GETNEXT), and the last is a string that represents some value to be set(used only for set requests).

The agent string looks like this:

Code:
extension 1 OctetString readonly /etc/motdpass.sh

So it makes the first agument variable(ARGV)=1
The second would be "GET" or "GETNEXT"

In the manual for the SNMP agent it gives a $ARGV[0,1, or 2] in their perl script example, but how would this look in a shell script? Would it just be $1, $2, or $3? This is what I have so far.

Code:
#!/bin/sh
# Shell script to pull primary ESA out of a file

FILENAME= /etc/motd

# Do work
extPrimEsa= grep "Primary ESA" $FILENAME|cut -d\= -f2

if [ $ARGV[0] -eq 1 ]; then 
	# OID queried is 1.3.6.1.4.1.546.14.1.0
	if [ $ARGV[1] = "GET" ]; then
	echo extPrimEsa
	fi
fi

I need to go through 8 different variables, but once I have this one down and working, I'll add the rest in. Am I doing this right?
# 2  
Old 10-31-2011
Hi, for starters, you could try something like this:
Code:
#!/bin/sh
# Shell script to pull primary ESA out of a file

FILENAME=/etc/motd   # No space in assignments

if [ $1 -eq 1 ]; then
  if [ "$2" = "GET" ]; then
    # Do work
    extPrimEsa=$(grep "Primary ESA" "$FILENAME"|cut -d\= -f2)
    echo "$extPrimEsa"
  fi
fi

This User Gave Thanks to Scrutinizer For This Post:
# 3  
Old 11-01-2011
This is great, but there were a few tweaks. The final code for this one variable looks like this:

Code:
#!/bin/sh
# Shell script to pull primary ESA out of a file

FILENAME=/etc/motd   # No space in assignments

if [ $1 -eq 1 ]; then
  if [ "$2" = "GET" ]; then
    # Do work
    extPrimEsa= grep "Primary ESA" "$FILENAME"|cut -d\= -f2
    echo "$extPrimEsa"
  fi
fi

Thank you so much.

---------- Post updated at 01:53 PM ---------- Previous update was at 09:45 AM ----------

Okay, this is my final final script that has all the extension variables accounted for and are being passed through SNMP to the server (Spectrum).

Code:
#!/bin/sh
# Shell script to pull primary ESA out of a file
# Define some stuff

FILENAME=/etc/motd

if [ "$1" = 1 ]; then
	extPrimEsa=grep "Primary ESA" "$FILENAME"|cut -d\= -f2
	echo "$extPrimEsa"

elif [ "$1" = 2 ]; then
	extSecEsa=grep "Secondary ESA" "$FILENAME"|cut -d\= -f2
	echo "$extSecEsa"
 	
elif [ "$1" = 3 ]; then
	extPrimCust=grep "Primary Customer" "$FILENAME"|cut -d\= -f2
	echo "$extPrimCust"

elif [ "$1" = 4 ]; then
	extPrimDBA=grep "Primary DBA" "$FILENAME"|cut -d\= -f2
	echo "$extPrimDBA"

elif [ "$1" = 5 ]; then
	extSysLoc=grep "System Location" "$FILENAME"|cut -d\= -f2
	echo "$extSysLoc"

elif [ "$1" = 6 ]; then
	extBusUnt=grep "Business Unit" "$FILENAME"|cut -d\= -f2
	echo "$extBusUnt"

elif [ "$1" = 7 ]; then
	extConsl=grep "Console" "$FILENAME"|cut -d\= -f2
	echo "$extConsl"

elif [ "$1" = 8 ]; then
	extSysTyp=grep "System Type" "$FILENAME"|cut -d\= -f2
	echo "$extSysTyp"

fi

# 4  
Old 11-01-2011
Whenever you find yourself writing the same 4 lines 9 times running, there's probably a better way. Smilie I'd suggest a case statement:
Code:
case "$1" in
1)    VAR1=$(grep "Primary ESA")  ;;
2)    VAR2=$(grep "Secondary ESA")  ;;
3)    VAR3=$(grep "Primary Customer") ;;

...

*)   echo "Unknown option $1" >&2 ;;
esac < "$FILENAME"

You can redirect in $FILENAME at the bottom that way, instead of repeating it over and over. Without a filename, grep just reads from standard input, which is what's being redirected at the bottom of the case statement there.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Ubuntu

[: too many arguments

line 5: #!/bin/bash old=$(du -sh /home/andy/Downloads/myfile.iso) while true; do new=$(du -sh /home/andy/Downloads/myfile.iso) if ; then break fi old=$new xdotool getactivewindow key Ctrl sleep 5 done line 5: bash - Meaning of " (square brackets)... (9 Replies)
Discussion started by: drew77
9 Replies

2. Shell Programming and Scripting

Too many arguments

hi I have this code a="a b c" set -- $a if ; then echo empty fi why is it line 3 reports "test: [: too many arguments"? :wall: Thanks! (4 Replies)
Discussion started by: h0ujun
4 Replies

3. Shell Programming and Scripting

: [: too many arguments in for -f in if

Hi Experts , I have following code if ; then mv path /filename newdirpath echo "K* files moved successfully to newdirpath \n" else echo "K* files DID NOT moved successfully to newdirpath \n" fi I am getting "echo "K* files DID NOT moved successfully to newdirpath \n"... (19 Replies)
Discussion started by: ajaypatil_am
19 Replies

4. Shell Programming and Scripting

grep with two arguments to arguments to surch for

Hello, is it possible to give grep two documents to surche for? like grep "test" /home/one.txt AND /home/two.txt ? thanks (1 Reply)
Discussion started by: Cybertron
1 Replies

5. Shell Programming and Scripting

Too many arguments

echo "the number from 1 to 10:" i=1 while do echo $i i=`expr $i+1' done above is the program i written in Linux O.S using vi editor but i am getting the error that while: line 3: i am not understanding that why i am getting this error. can any body please help me regarding this... (3 Replies)
Discussion started by: bsatishbabu
3 Replies

6. Shell Programming and Scripting

[: too many arguments

hi I am getting too many arguments error for the below line if ; then Thx in advance (1 Reply)
Discussion started by: vls1210
1 Replies

7. Shell Programming and Scripting

too many arguments?

i don't know what's wrong with the code, says too many arguments in the first two if statements. how to change it? thx. the file is like in this format: ;dfs;dfdsf;fsd ff dsf;dfdffdfd; -f2 should be only one word with no space, but could be like this 'n/a', '**ABC' while read line; do ... (1 Reply)
Discussion started by: dtdt
1 Replies

8. Shell Programming and Scripting

Too many arguments?

I can't find anything wrong with this line of code, it works when there is one file in the directory but more than one i get a "too many arguements2 error if ; then am i missing something? (3 Replies)
Discussion started by: Alendrin
3 Replies

9. Shell Programming and Scripting

[: too many arguments

Hi Guys I have this small Bash script - but it fails when I'm trying to run it. ./test.sh: && ; then # date >> /writable/sys/shutdown.log shutdown -h "now" exit fi done (4 Replies)
Discussion started by: tainted2real
4 Replies

10. UNIX for Dummies Questions & Answers

Arguments

Ok so i had to create a file and put some random text into it which i did. THen u make a script which takes 2 arguments. The first being a line of text, the second being your newly created file. The script should take the first argument and insert it into the very top (the first line) of... (1 Reply)
Discussion started by: iago
1 Replies
Login or Register to Ask a Question