Parse configuration file & add/remove line in particular section
Greetings,
I recently built a replicated DRBD, Heartbeat, & iSCSI Target Initiator storage server on Ubuntu 10.04 to offer shared storage to server Vmware ESX and Microsoft Clusters. Everything works flawlessly, however I wanted to make a script to create, remove, grow volumes to offer ESX rather then having a technical diagram and instructions so that other technicians are able to do this process with limited Linux knowledge.
I know the basis to Linux scripting with variables and command scripting but I am not sure how to approach parsing a configuration file for iSCSI Target Initiator and adding lines between existing lines under a sub group. I figure it has to be done in an array but I am not sure how to keep it within a parameter as well as add a line adding the next sequential number available.
Let me give an example of my configuration file called ietd.conf:
What I need to do is when my script asks the user which Server they wish to add storage too (lets say ESX) that it targets “Target iqn.2011-03.stroageserver.workgroup.net:VMware.Storage.1” and reads each “Lun #.....” and adds a line below LUN 2 (in example configuration file) as LUN 3? I will replace “/dev/replicated/<volume>” with a variable which I can do. I just do not know how to parse only the lines between “Target iqn” and the next “Target ign” looking for “LUN #” and adding a new line below the existing LUN with a higher sequential number.
I am also not sure how to approach gaps in LUN numbers when volumes are deleted. My assumption is to take the highest LUN # under the target and add one to it but I am not sure if this is correct?
Any insight would be great. Thanks.
Last edited by Aeudian; 03-22-2011 at 12:24 PM..
Reason: Title Change
Thank you! I was able to utilize what you gave me with variables to make it work in my script perfectly.
I am working on my delete part of my script where now I am looking to gather all the LUN #'s under a particular field from the ietd.conf file (such as "Target iqn.2011-03.stroageserver.workgroup.net:VMware.Storage.1" and offer them to the user as a selection choice such as:
I have two questions as I am not familiar with the perl programming language.
1) When I execute what you gave me against the ietd.conf file I am prompted to "Enter option:" but nothing is printed on the screen telling me the available options or lines that it has found. No matter what I type I get the die "Invalid Option" and exit.
2) My current script is built in /bin/bash can I make perl and bash work together as my future plan is it extract Path="/dev/replicated/<name>" into a variable of the line being removed from ietd.conf for my second stage of deleting the lvm.
It's working fine at my end see the below o/p. I have modified my perl code in my previous post.You can see how to pass variable to bash script from perl.
ietd.conf file
Perl script invocation
Output
Hi Gurus,
I have below file which has different sections, need to move the sections to beginning of the each record.
original file
aaa
bbb
ccc
ddd
eee
fff
output file.
aaa
bbb
ccc
ddd
eee
fff (6 Replies)
In the awk below I am trying to parse the Sample Name below the section. The values that are extracted are read into array s(each value in a row seperated by a space) which will be used later in a bash script. The awk does execute but no values are printed. I am also not sure how to print in a row... (1 Reply)
I can obtain information from itdt inventory command however it display as below, I'd like to print each entity on one line but seperated by :
the file is something like and each section ends with Volume Tag
Drive Address 256
Drive State ................... Normal
ASC/ASCQ... (3 Replies)
I have searched in a variety of ways in a variety of places but have come up empty.
I would like to prepend a portion of a section header to each following line until the next section header. I have been using sed for most things up until now but I'd go for a solution in just about anything--... (7 Replies)
Is there an awk, sed, vi or any line command that adds Field Separators (default spaces) to each line in a file?
$cat RegionalData
12FC2525MZLP8266900216
12FC2525MZLP8266900216
12FC2525NBLP8276900216
12FC2525NBLP8276900216
Desired results:
1 2 F C 2525 MZ LP 826 690 02 16
1 2 F C... (2 Replies)
Hi,
I understand either AWK or SED can do this, but I not sure how to extract the following configuration in section. Meaning when I need to find code with " ip helper-address 192.168.11.2" , it would start from "interface Serial0/0" and "interface FastEthernet0/1". Only displaying both section... (2 Replies)
Aloha! I have just over 1k of users that have permissions that they shouldn't under our system. I need to parse a provided list of usernames, check their permissions file, and strip the permissions that they are not allowed to have. If upon the permissions strip they are left with no permissions,... (6 Replies)
I need to get a section of a file based on 2 params. I want the part of the file between param 1 & 2. I have tried a bunch of ways and just can't seem to get it right. Can someone please help me out.....its much appreciated. Here is what I have found that looks like what I want....but doesn't... (12 Replies)
hi,
I have a 20 line file.
I need a command which will brinf back a specific line based upon the line number I enter.
e.g. the file looks like this and is called file1
jim is a man
john is a woman
james is a man
wendy is a woman
lesley is a woman
i want a command that will... (4 Replies)