Shell script to read multiple options from file, line by line
Hi all
I have spent half a day trying to create a shell script which reads a configuration file on a line by line basis.
The idea of the file is that each will contain server information, such as IP address and various port numbers. The line could also be blank (The file is user created). Here is an example
The script should ignore any empty lines, obviously. For the line with server 172.18.1.1, default settings should be used as nothing else is specified (Default is UDP mode port 500). For the line 172.18.50.1, the specified settings are that tcp mode is to be used, and SSH and SSL on port 8443 options are also to be used.
This is what I have created, as an example. The final product will obviously do much more, it is the reading in of the lines and variables that I need help with.
The idea here is that each line will be read in. grep will attempt to find a valid IP address in that line, and if it does ( if [ ! -z $IP ] ) then the line will be checked for all possible options. Otherwise if there is no valid IP address on the line it will go to the next line.
I know that I am going wrong somewhere. I cannot use the $SRV string to get any information, although this pasted script simply gives no response. I also believe that using
will not work with the servers file where the line contains spaces. Is this true?
Can anyone advise on the commands I should be using to read the lines and gain these variables. Could I use a for loop instead?
Thanks for any help
PS also, is the usage of grep ok? I had used awk before but this seems to work ok and be shorter. Is there any advantage of one over the other? Thanks
Last edited by haggismn; 06-09-2012 at 06:05 PM..
Reason: fixed ssl,ssh,http if -z statements
Hi,
I have gps receiver log..its giving readings .like below
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GPSD,R=1
$GPGSV,3,1,11,08,16,328,40,11,36,127,00,28,33,283,39,20,11,165,00*71... (3 Replies)
Hi,
I need to read a text file from shell script line by line and copy the feilds of each line.
Below is the complete requirement.
I've text file which contains ...
pgm1 file11 file12 file13
pgm2 file21 file22
pgm3 file31 file32 file33
I'll give input as... (4 Replies)
I am using the while-loop to read a file.
The file has lines with null-terminated strings (words, actually.)
What I have by that reading - just a first word up to '\0'!
I need to have whole string up to 'new line' - (LF, 10#10, 16#A)
What I am doing wrong?
#make file 'grb' with... (6 Replies)
Hi ,
I am trying to write an shell, which reads a text file (from a location) having a list of numbers of strictly 5 digits only ex: 33144
Now my script will check :
1) that each entry is only 5 digits & numeric only, no alphabets, & its not empty.
2)then it executes a shell script called... (8 Replies)
I have a LOG file which looks like this
Import started at: Mon Jul 23 02:13:01 EDT 2012
Initialization completed in 2.146 seconds.
--------------------------------------------------------------------------------
--
Import summary for Import item: PolicyInformation... (8 Replies)
Hi All,
Am trying to write wrapper shell/bash script on a utility tool for which i need to pass 2 files as arugment to execute utility tool.
Wraper script am trying is to do with above metion 2 files.
utility tool accepts :
a. userinfo file : which contains username
b. item file : which... (2 Replies)
Hello,
I'm works on Ubuntu server
My goal : I would like to read file line per line, but i want to started at the end of file.
Currently, I use instructions :
while read line;
do
COMMAND
done < /var/log/apache2/access.log
But, the first line, i don't want this. The file is long... (5 Replies)
i have a text file as belows, it includes 2 columns, 1st is the column name, 2nd is the file_name
data_file.txt
column_name file_name
col1 file1
col2 file2
col3 file1
col4 file1
col5 file2
now, i would like to... (4 Replies)
Discussion started by: tester111
4 Replies
LEARN ABOUT DEBIAN
plan9-getflags
GETFLAGS(8) System Manager's Manual GETFLAGS(8)NAME
getflags, usage - command-line parsing for shell scripts
SYNOPSIS
getflags $*
usage [ progname ]
DESCRIPTION
Getflags parses the options in its command-line arguments according to the environment variable $flagfmt. This variable should be a list
of comma-separated options. Each option can be a single letter, indicating that it does not take arguments, or a letter followed by the
space-separated names of its arguments. Getflags prints an rc(1) script on standard output which initializes the environment variable
$flagx for every option mentioned in $flagfmt. If the option is not present on the command-line, the script sets that option's flag vari-
able to an empty list. Otherwise, the script sets that option's flag variable with a list containing the option's arguments or, if the
option takes no arguments, with the string 1. The script also sets the variable $* to the list of arguments following the options. The
final line in the script sets the $status variable, to the empty string on success and to the string usage when there is an error parsing
the command line.
Usage prints a usage message to standard error. It creates the message using $flagfmt, as described above, $args, which should contain the
string to be printed explaining non-option arguments, and $0, the program name (see rc(1)). If run under sh(1), which does not set $0, the
program name must be given explicitly on the command line.
EXAMPLE
Parse the arguments for leak(1):
flagfmt='b,s,f binary,r res,x width'
args='name | pid list'
if(! ifs=() eval `{getflags $*} || ~ $#* 0){
usage
exit usage
}
SOURCE
/src/cmd/getflags.c
/src/cmd/usage.c
SEE ALSO arg(3)GETFLAGS(8)