Sponsored Content
Top Forums Shell Programming and Scripting Bash : More parameter expansion and IFS Post 303018402 by sumguy on Tuesday 5th of June 2018 01:12:37 PM
Old 06-05-2018
Bash : More parameter expansion and IFS

I am trying to become more fluent with the interworking of bash and minimize the number of external calls.

Sample Data. This will be the response of the snmp query.
Code:
SNMPv2-MIB::sysName.0 = STRING: SomeHostName
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.1745
SNMPv2-MIB::sysDescr.0 = STRING: Cisco IOS Software, IOS-XE Software, Catalyst L3 Switch Software (CAT3K_CAA-UNIVERSALK9-M), Version 03.06.08.E RELEASE SOFTWARE (fc1)

I would like to extract as follows:
Code:
sysD=03.06.08.E 
sysN=SomeHostName
sysO=1745

The code given below does this. But its ugly and is very dependant on external calls.

I reviewed Chris FA Johnsons site / link Extracting parts of a string by Chris F.A. Johnson and reviewed a few books I have written by him and looked at web resources and dont find a good method to execute the same without external calls.

Is there anyway I can isolate these pieces of information without external calls ?

Code:
 
sult=$($SNMPG $RW -v2c -mALL $i sysDescr.0 sysName.0 sysObjectID.0 2>/dev/null)
sysD=$(echo "$sult" | grep "sysDescr" | sed 's/.*, Version //g; s/ RELEASE.*//g; s/,$//g')
sysN=$(echo "$sult" | grep "sysName" | awk '{print $NF}')
sysO=$(echo "$sult" | grep "sysObjectID" | sed 's/.*enterprises//g' | cut -d"." -f4)
printf "%s," "$sysN" "$sysD" "$sysO";printf "%s\n" | tee -a ofil.csv

Thanks for all your help !!

Last edited by RudiC; 06-05-2018 at 02:18 PM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

removing html tags via parameter expansion

Hi all- I have a variable that contains a web page: echo $STUFF <html> <head> <title>my page</title></head> <body> blah blah etc.. Can I use the shell's parameter expansion abilities to remove just the tags? I thought that FIXHTML=${STUFF//<*>/} might do it, but it didn't seem to... (2 Replies)
Discussion started by: rev66
2 Replies

2. Shell Programming and Scripting

Need help with parameter expansion

Say you have this numeric variable that can be set by the user but you never want it to leave a certain range when it gets printed. How could you use parameter expansion such that it will never expand outside of that boundary? Thanks ---------- Post updated at 11:09 PM ---------- Previous update... (3 Replies)
Discussion started by: stevenswj
3 Replies

3. Shell Programming and Scripting

Bash parameter expansion from a config file

Hi - I am trying to do a simple config file with known variable names in it, e.g.: contents of config file a.conf: -a -b $work -c $host simplified contents of bash script file: work='trunk' host='alaska' opts=$(tr '\n' ' ' < a.conf) opts="$opts $*" mycommand $opts arg1 arg2 The... (3 Replies)
Discussion started by: mrengert
3 Replies

4. Shell Programming and Scripting

Parameter expansion not working for all strings...

I'm trying to write a script that parses my music collection and hard link some filenames that my media player doesn't like to other names. To do this I need to extract the name and remove alla non ASCII characters from that and do a cp -l with the result. Problem is this: 22:16:58 $... (8 Replies)
Discussion started by: refuser
8 Replies

5. UNIX for Dummies Questions & Answers

Parameter Expansion with regular expression

Hello experts, I am exploring parameter expansion, and trying to cut the fields in a URL. Following is the requirement: I have // abc.nnt /dir1/dir2/dir3/dir4/somefile.java What i need to get is the path after dir3, and dir3 will be passed. output that i need is... (1 Reply)
Discussion started by: gjarms
1 Replies

6. Shell Programming and Scripting

Bash IFS

I am using bash and resetting IFS as below when reading the command line arguments. I do this so I can call my script as in Ex1. Ex1: ./synt2d-ray3dmod.bash --xsrc=12/20/30 This allows me to split both sides so that when I do "shift" I can get 12/20/30 What I do not understand is... (21 Replies)
Discussion started by: kristinu
21 Replies

7. Shell Programming and Scripting

Bash Parameter Expansion

I have made the following examples that print various parameter expansions text: iv-hhz-sac/hpac/hhz.d/iv.hpac..hhz.d.2016.250.070018.sac (text%.*): iv-hhz-sac/hpac/hhz.d/iv.hpac..hhz.d.2016.250.070018 (text%%.*): iv-hhz-sac/hpac/hhz (text#*.): d/iv.hpac..hhz.d.2016.250.070018.sac... (2 Replies)
Discussion started by: kristinu
2 Replies

8. Shell Programming and Scripting

Bash Parameter Expansion

#!/bin/bash SNMPW='/usr/bin/snmpwalk' while read h i do loc=$($SNMPW -v3 -u 'Myusername' -l authPriv -a SHA -A 'Password1' -x AES -X 'Password2' $i sysLocation.0 2>/dev/null) loc=${loc:-" is not snmpable."} loc=${loc##*: } loc=${loc//,/} echo "$i,$h,$loc" done < $1 My question is ... ... (1 Reply)
Discussion started by: sumguy
1 Replies

9. Shell Programming and Scripting

Bash : Parameter expansion ${var:-file*}

Example data $ ls *somehost* 10.10.10.10_somehost1.xyz.com.log 11.11.11.11_somehost2.xyz.com.log #!/bin/bash #FILES="*.log" FILES=${FILES:-*.log} for x in $FILES do ip="${x%%_*}" # isolate IP address x="${x##*_}" # isolate hostname hnam="${x%.*}" # Remove the ".log"... (2 Replies)
Discussion started by: popeye
2 Replies

10. Shell Programming and Scripting

Use parameter expansion over a parameter expansion in bash.

Hello All, Could you please do help me here as I would like to perform parameter expansion in shell over a parameter expansion. Let's say I have following variable. path="/var/talend/nat/cdc" Now to get only nat I could do following. path1="${path%/*}" path1="${path1##*/}" Here... (8 Replies)
Discussion started by: RavinderSingh13
8 Replies
snmptranslate(1m)														 snmptranslate(1m)

NAME
snmptranslate - translate SNMP OID values into a more useful form SYNOPSIS
/usr/sfw/bin/snmptranslate [-D token...] [-h] [-m miblist] [-M dirlist] [-T transopts] [common options] OID [OID...] snmptranslate is an application that translates one or more SNMP object identifier values from their symbolic (text) forms into their numerical forms or vice-versa. OID is either a numeric or text object identifier. The following options are supported: -D token[,...] Turn on debugging output for the specified token(s). Use ALL for extremely verbose output. -h Display a brief usage message and then exit. -m miblist Specifies a colon-separated list of MIB modules to load for this application. This overrides the environment variable MIBS. The special keyword ALL is used to specify all modules in all directories when searching for MIB files. Every file whose name does not begin with "." is parsed as if it were a MIB file. -M dirlist Specifies a colon-separated list of directories to search for MIBs. This overrides the environment variable MIBDIRS. -T transopts Provides control over the translation of the OID values. The following transopts are available: -Td Display full details of the specified OID. -Tp Display a graphical tree, rooted at the specified OID. -Ta Dump the loaded MIB in a trivial form. -Tl Dump a labeled form of all objects. -To Dump a numeric form of all objects. -Ts Dump a symbolic form of all objects. -Tt Dump a tree form of the loaded MIBs (mostly useful for debugging). -V Display version information for the application and then exit. -w width Specifies the width of -Tp and -Td output. The default is very large. In addition to the preceding options, snmptranslate takes the OID input (-I), MIB parsing (-M) and OID output (-O) options described in the INPUT OPTIONS, MIB PARSING OPTIONS and OUTPUT OPTIONS sections of snmpcmd(1M). Example 1: Expanding sysDescr The following command translates sysDescr to a more qualified form: % snmptranslate -On -IR sysDescr .1.3.6.1.2.1.1.1 The following command does further translation of sysDescr: % snmptranslate -Onf -IR sysDescr .iso.org.dod.internet.mgmt.mib-2.system.sysDescr Again, the following command does further translates sysDescr: % snmptranslate -Td -IR -OS system.sysDescr SNMPv2-MIB::sysDescr sysDescr OBJECT-TYPE -- FROM SNMPv2-MIB -- TEXTUAL CONVENTION DisplayString SYNTAX OCTET STRING (0..255) DISPLAY-HINT "255a" MAX-ACCESS read-only STATUS current DESCRIPTION "A textual description of the entity. This value should include the full name and version identification of the system's hardware type, software operating-system, and networking software." ::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) 1 } Example 2: Displaying a Tree The following command displays the tree shown below: % snmptranslate -Tp -IR -OS system +--system(1) | +-- -R-- String sysDescr(1) | Textual Convention: DisplayString | Size: 0..255 +-- -R-- ObjID sysObjectID(2) +-- -R-- TimeTicks sysUpTime(3) | | | +-- sysUpTimeInstance(0) | +-- -RW- String sysContact(4) | Textual Convention: DisplayString | Size: 0..255 +-- -RW- String sysName(5) | Textual Convention: DisplayString | Size: 0..255 +-- -RW- String sysLocation(6) | Textual Convention: DisplayString | Size: 0..255 +-- -R-- INTEGER sysServices(7) | Range: 0..127 +-- -R-- TimeTicks sysORLastChange(8) | Textual Convention: TimeStamp | +--sysORTable(9) | +--sysOREntry(1) | Index: sysORIndex(1) | +-- ---- INTEGER sysORIndex(1) | Range: 1..2147483647 +-- -R-- ObjID sysORID(2) +-- -R-- String sysORDescr(3) | Textual Convention: DisplayString | Size: 0..255 +-- -R-- TimeTicks sysORUpTime(4) Textual Convention: TimeStamp Example 3: Dumping MIB Contents The commands shown below produce the dumps that follow. % snmptranslate -Ta | head dump DEFINITIONS ::= BEGIN org ::= { iso 3 } dod ::= { org 6 } internet ::= { dod 1 } directory ::= { internet 1 } mgmt ::= { internet 2 } experimental ::= { internet 3 } private ::= { internet 4 } security ::= { internet 5 } snmpV2 ::= { internet 6 } Here is use of the -Tl option: % snmptranslate -Tl | head .iso(1).org(3) .iso(1).org(3).dod(6) .iso(1).org(3).dod(6).internet(1) .iso(1).org(3).dod(6).internet(1).directory(1) .iso(1).org(3).dod(6).internet(1).mgmt(2) .iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1) .iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).system(1) .iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).system(1).sysDescr(1) .iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).system(1).sysObjectID(2) .iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).system(1).sysUpTime(3) Here is the use of the -To option: % snmptranslate -To | head .1.3 .1.3.6 .1.3.6.1 .1.3.6.1.1 .1.3.6.1.2 .1.3.6.1.2.1 .1.3.6.1.2.1.1 .1.3.6.1.2.1.1.1 .1.3.6.1.2.1.1.2 .1.3.6.1.2.1.1.3 Here is the use of the -Ts option: % snmptranslate -Ts | head .iso.org .iso.org.dod .iso.org.dod.internet .iso.org.dod.internet.directory .iso.org.dod.internet.mgmt .iso.org.dod.internet.mgmt.mib-2 .iso.org.dod.internet.mgmt.mib-2.system .iso.org.dod.internet.mgmt.mib-2.system.sysDescr .iso.org.dod.internet.mgmt.mib-2.system.sysObjectID .iso.org.dod.internet.mgmt.mib-2.system.sysUpTime Here is the use of the -Tt option: % snmptranslate -Tt | head org(3) type=0 dod(6) type=0 internet(1) type=0 directory(1) type=0 mgmt(2) type=0 mib-2(1) type=0 system(1) type=0 sysDescr(1) type=2 tc=4 hint=255a sysObjectID(2) type=1 sysUpTime(3) type=8 0 Successful completion. 1 A usage syntax error. A usage message is displayed. Also used for matching object errors, after which an error message is dis- played. 2 An error occurred while executing the command. An error message is displayed. See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Availability |SUNWsmcmd | +-----------------------------+-----------------------------+ |Interface Stability |External | +-----------------------------+-----------------------------+ snmpcmd(1M), snmp_variables(4), attributes(5) 21 Jan 2004 snmptranslate(1m)
All times are GMT -4. The time now is 07:35 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy