Help with SED


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with SED
# 8  
Old 03-28-2012
You've given me is a program that doesn't do what you want. I can't use it to tell tell what you do want. Smilie

You've shown me output that isn't what you want. I can't use it to see what ouptut you do want. Smilie

If you don't show the relevant input and output, I may need to install snmpd myself to have a chance at guessing what you need.

Quote:
Originally Posted by Corona688
Show the input you have and the output you want. Your sed expression may not be right -- without seeing the data it's supposed to match and change, I really can't tell.
# 9  
Old 03-28-2012
Let me explain you step by step.

1. There is a file /opt/adapter/Adapter/snmp/conf/snmpd.conf which has a variable as

rocommunity public
rocommunity6 sp1der

2. I want to use replace the value public with sp1der. i cannot use sed, bcoz customer wants to manually enter the value for this parameter.

Thats it, how do i achieve this. Thanks for bearing me.

-Siddhesh
# 10  
Old 03-28-2012
Thank you.

Code:
read COMMUNITY

cp /opt/adapter/Adapter/snmp/conf/snmpd.conf /opt/adapter/Adapter/snmp/conf/snmpd.conf.backup
sed -i "s/rocommunity public/rocommunity $COMMUNITY/" /opt/adapter/Adapter/snmp/conf/snmpd.conf

# 11  
Old 03-29-2012
Hello That worked well.

I also have a IP_LIST file which has ip addresses defined for all node. how do i get this sed command u use the same.

It works for me without "read" variable

Code:
IP_LIST=<path_to_file>

for ipaddr in $(cat IP_LIST); do
     ssh ${ipaddr} "sed -i '/rocommunity/s/public/sp1der/' /opt/adapter/Adapter/snmp/conf/snmpd.conf"
done

How do i incorporate in my script
Code:
IP_LIST=/root/IP_LIST
read STRING
for ipaddr in $(cat IP_LIST); do
 ssh ${ipaddr}sed -i "s/rocommunity public/rocommunity $STRING/" /opt/adapter/Adapter/snmp/conf/snmpd.conf

When executed it give error as below
Hello, You are about to change the rocommunity string in /opt/adapter/Adapter/snmp/conf/snmpd.conf.
sp1der
./rommonity_new.sh: line 68: syntax error: unexpected end of file
[root@Mediaspire siddhesh]#


Please advice.
-Siddhesh

---------- Post updated at 11:38 AM ---------- Previous update was at 07:33 AM ----------

Hello,

The script worked well.

I need following information. The below mentioned script changes the value of variable rocommunity from public to sp1der on all nodes.

Code:
#!/bin/bash

#########################################################################################################
# Shellscript   :       rocommunity_change.sh - To change the community string
# Version        :       V1.0
# Owner          :       Siddhesh Khavnekar <siddhesh.khavnekar@mobixell.com>
# Date           :       2012-03-28
# Category      :       Files Management
#########################################################################################################
# Description   :       This scipt will change rocommuniy from snmpd.conf on all nodes
# IP_LIST       :       Locating all your remote servers' ip addresses in ip_file one per line!
#########################################################################################################

#Defining Variable
#------------------------
IP_LIST=/root/IP_LIST
ADAPTER_HOME=/opt/adapter
SNMP=/opt/adapter/Adapter/snmp/conf/snmpd.conf
BACKUP_DIR=/var/tmp
DATE=`date +%Y%m%d%H%M%S`
LOG=/root/community_logs
TMP=/tmp/value

#Backing Up Orginal Files
#-------------------------
echo "Backing up the original configuration file to $BACKUP_DIR" >> $LOG.$DATE
cp -pv $ADAPTER_HOME/Adapter/snmp/conf/snmpd.conf $BACKUP_DIR/snmpd.conf_$(date +%d%b%Y)
cp -pv $ADAPTER_HOME/ManagementTool/conf/MTInternalConfig.properties $BACKUP_DIR/MTInternalConfig.properties_$(date +%d%b%Y)
echo "Orignal config file back-up done succesfully" >> $LOG.$DATE

echo "Hello, Please enter the name for you wish to set for variable rocommunity string in  "/opt/adapter/Adapter/snmp/conf/snmpd.conf"."

read STRING
for ipaddr in $(cat $IP_LIST); do
ssh ${ipaddr} "sed -i 's/rocommunity public/rocommunity $STRING/' /opt/adapter/Adapter/snmp/conf/snmpd.conf"
done

echo "Hello, Please enter the name for you wish to set for variable rocommunity string in  "/opt/adapter/Adapter/snmp/conf/snmpd.conf"."

read STRING
for ipaddr in $(cat $IP_LIST); do
ssh ${ipaddr} "sed -i 's/rocommunity public/rocommunity $STRING/' /opt/adapter/Adapter/snmp/conf/snmpd1.conf"
done

#Verification of changes done.
#-------------------------------------
grep -w 'ServerSNMPGetArgs' $ADAPTER_HOME/Adapter/snmp/conf/snmpd.conf | grep -w sp1der >> /dev/null

if
[ $(echo $?) = 0 ]; then
echo "rocommunity string set to sp1der sucessfully in MTInternalConfig.properties for ServerSNMPGetArgs." >> $LOG.$DATE
else
echo "Could not set the rocommunity string to sp1der in MTInternalConfig.properties for ServerSNMPGetArgs. Check the file permission." >>  $LOG.$DATE
fi

exit 0

Now in the verfication part it verifies for only one node on which the script is running. I want this to very on all the nodes where it was changed earlier. The IP addresses are already mentioned in IP_LIST file.

Code:
#Verification of changes done.
#-------------------------------------
grep -w 'rocommunity' $ADAPTER_HOME/Adapter/snmp/conf/snmpd.conf | grep -w sp1der >> /dev/null

if
[ $(echo $?) = 0 ]; then
echo "rocommunity string set to sp1der sucessfully in MTInternalConfig.properties for ServerSNMPGetArgs." >> $LOG.$DATE
else
echo "Could not set the rocommunity string to sp1der in  MTInternalConfig.properties for ServerSNMPGetArgs. Check the file  permission." >>  $LOG.$DATE
fi

exit 0

Need to change the above mentioned part in code. Please advice.

-Siddhesh
# 12  
Old 03-30-2012
Your code contains many useless uses of cat and useless uses of backticks. If the list of IP's grows large enough, or any of the hostnames contain spaces, your script may malfunction.

Instead of for X in $(cat foo) you should generally do
Code:
while read X
do
...
done <inputfile

which can read from any size of file without problems and won't split on spaces, just lines.

Also, you don't need to check the value of $? here. If you put the grep straight into the if-statement itself the effect is the same. So:

Code:
while read IP
do
        if ssh "$IP" grep "'^ *rocommunity  *spider *$'" $ADAPTER_HOME/Adapter/snmp/conf/snmpd.conf  >/dev/null </dev/null
        then
                echo "$IP rocommunity set to spider"
        else
                echo "$IP rocommunity not set to spider!"
        fi

# stdin for the entire loop will be $IP_LIST, so the read reads from that file by default
# stdout for entire loop will be $LOG.$DATE, so the echo appends to that file by default
done < $IP_LIST >> $LOG.$DATE

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

I am learning regular expression in sed,Please help me understand the use curly bracket in sed,

I am learning SED and just following the shell scripting book, i have trouble understanding the grep and sed statement, Question : 1 __________ /opt/oracle/work/antony>cat teledir.txt jai sharma 25853670 chanchal singhvi 9831545629 anil aggarwal 9830263298 shyam saksena 23217847 lalit... (7 Replies)
Discussion started by: Antony Ankrose
7 Replies

2. Shell Programming and Scripting

sed and awk giving error ./sample.sh: line 13: sed: command not found

Hi, I am running a script sample.sh in bash environment .In the script i am using sed and awk commands which when executed individually from terminal they are getting executed normally but when i give these sed and awk commands in the script it is giving the below errors :- ./sample.sh: line... (12 Replies)
Discussion started by: satishmallidi
12 Replies

3. Shell Programming and Scripting

sed inside sed for replacing string

My need is : Want to change docBase="/something/something/something" to docBase="/only/this/path/for/all/files" I have some (about 250 files)xml files. In FileOne it contains <Context path="/PPP" displayName="PPP" docBase="/home/me/documents" reloadable="true" crossContext="true">... (1 Reply)
Discussion started by: linuxadmin
1 Replies

4. Shell Programming and Scripting

How to use sed to replace the a string in the same file using sed?

How do i replace a string using sed into the same file without creating a intermediate file? (7 Replies)
Discussion started by: gomes1333
7 Replies

5. UNIX for Dummies Questions & Answers

SED: Can't Repeat Search Character in SED Output

I'm not sure if the problem I'm seeing is an artifact of sed or simply a beginner's mistake. Here's the problem: I want to add a zero-width space following each underscore between XML tags. For example, if I had the following xml: <MY_BIG_TAG>This_is_a_test</MY_BIG_TAG> It should look like... (8 Replies)
Discussion started by: rhetoric101
8 Replies

6. Shell Programming and Scripting

deleting text records with sed (sed paragraphs)

Hi all, First off, Thank you all for the knowledge I have gleaned from this site! Deleting Records from a text file... sed paragraphs The following code works nearly perfect, however each time it is run on the log file it adds a newline at the head of the file, run it 5 times, it'll have 5... (1 Reply)
Discussion started by: Festus Hagen
1 Replies

7. Shell Programming and Scripting

sed has zeored my files. Help me with sed please

i made a script to update a lot of xml files. to save me some time. Ran it and it replaced all the the files with a 0kb file. The problem i was having is that I am using sed to change xml node <doc_root>. The problem with this is it has a / in the closing xml tag and the stuff inside will also have... (4 Replies)
Discussion started by: timgolding
4 Replies

8. Shell Programming and Scripting

sed over writes my original file (using sed to remove leading spaces)

Hello and thx for reading this I'm using sed to remove only the leading spaces in a file bash-280R# cat foofile some text some text some text some text some text bash-280R# bash-280R# sed 's/^ *//' foofile > foofile.use bash-280R# cat foofile.use some text some text some text... (6 Replies)
Discussion started by: laser
6 Replies

9. Shell Programming and Scripting

Issue with a sed one liner variant - sed 's/ ; /|/g' $TMP1 > $TMP

Execution of the following segment is giving the error - Script extract:- OUT=$DATADIR/sol_rsult_orphn.bcp TMP1=${OUT}_tmp1 TMP=${OUT}_tmp ( isql -w 400 $dbConnect_OPR <<EOF select convert(char(10), s.lead_id) +'|' + s.pho_loc_type, ";", s.sol_rsult_cmnt, ";", +'|'+ s.del_ind... (3 Replies)
Discussion started by: kzmatam
3 Replies

10. Shell Programming and Scripting

Sed Question 1. (Don't quite know how to use sed! Thanks)

Write a sed script to extract the year, rank, and stock for the most recent 10 years available in the file top10_mktval.csv, and output in the following format: ------------------------------ YEAR |RANK| STOCK ------------------------------ 2007 | 1 | Exxon... (1 Reply)
Discussion started by: beibeiatNY
1 Replies
Login or Register to Ask a Question