Reading and Writing a conf file - Suggestions and improvements?
Hello all
As part of my TUI - (line based) Text User Interface, i do have 2 commands to assist working with conf files.
Now, for me they work, but since i wrote them, i automaticly use them they way they should be used... you know what i mean.
Anyway, they are designed to read 'simple' values, such as words or numbers, maybe a sentence.
However, if there is a 'variable' saved, it shows them, and upon saving it saves it 'as is'.
But this leads to 'shell injection', which i certainly want to avoid here, as i only want the values to be saved or read as is.
The usage is quite simple:
to get a list:
Read a value:
or
Write a value:
The 'core' of tui-conf-get:
The core of tui-conf-set is a bit more complex, as i want to preserve existing quotes of the value, without the user needing to add them again. Also there is specialy handling according to chars within the value-string to be saved, if there is a coma, back-/slash, whatsoever, and change the Sed-Divider (SD) accordingly.
Any suggestions?
To be complete, i add the full scripts as attachments, and inform you that to use sudo tui-conf-set CONFIG VARIABLE VALUE tui-conf-set must be located in either /bin or /sbin, $HOME/bin will not work unless you use: sudo $(which tui-conf-set)
As they are part of a package, they originaly do not have the .sh extension, that has been added to attach them here.
I hope I'm not completely missing the point here.
It seems there is a lot of searching for characters that need to be escaped, and changing the SD because of file content.
In that case, it might save some work to decide what you want to use for the SD, say '|', and include it in a group of others you want to escape, such as $,/". etc.
Sed has a character '&' which stands for "what was found". You could use it something like this and do all your escaping in one go, and not have to change the SD so much:
Code:
sed 's|["$/\|\@]|\\&|g'
Am I even close to what you need?
Last edited by ongoto; 12-05-2014 at 07:03 PM..
Reason: forgot something
Yes, sorry i guess this one belongs to the cathegory of 'unclear description'.
Its exactly what i needed!
And finaly figured why it did fail on some values but not on others while trying to get it working...
i had removed spaces... bad idea... :doh:
But you mix the both... the variable i use as SED-DIVIDER is required, because even with ' strings, it fails if there is the same char within any part of the strings to work with.
But thanks to your saying i had another look and could shorten it a little.
Pretty good.
You've put together a lot of utilities. Haven't had time to try them all but liking what I see. It's a little scary at first, but it shure cuts down on all the comments and clutter.
I try to search and read about bash scripting. So far Ive read a few of these:
The Beginner Guide to Writing Linux Shell Scripts
BASH Programming - Introduction HOW-TO
An A-Z Index of the Bash command line for Linux.
unix help
but I am a visual person that learns from repetition and errors.... (1 Reply)
Hi All,
Here is my requirement. I am grepping through the log files and cutting some fields from the file to generate a csv file. Now I have to check if 2nd field is having some fixed value then with the help of 4th field I have to look in same log and run another grep command to retrieve the... (11 Replies)
Hi
I am trying to extract information out of a file but keep getting grep cant open errors
the code is below:
#bash
#extract orders with blank address details
#
# obtain the current date
# set today to the current date ccyymmdd format
today=`date +%c%m%d | cut -c24-31`
echo... (8 Replies)
In the code below i try to write and read from a file, but i get unexpected results, like after writing i cannot open the file, and when reading the file the value entered earlier is not shown
bool creat_fragments(int nFragment)
{
int fd, rand_value;
char frag_path, buf;
for(int... (8 Replies)
Need to develop a unix shell script for the below requirement and I need your assistance:
1) search for file.log and file.bad file in a directory and read them
2) pull out "Load_Start_Time", "Data_File_Name", "Error_Type" from log file
4) concatinate each row from bad file as... (3 Replies)
Hi All,
Please help me in writing data to a file in one row.
In database there is a column which contains large data which does not fit in the file in one row. The column contains list of paths. I want to write these paths to a file in one row.
Please find the code below writes :
... (2 Replies)
Hello everybody,
I'm trying to code a program which makes the following:
It sends an ARP request frame and when it gets the reply, extracts the IP address of source and writes it to a .txt file. This is gonna be done with many hosts (with a for() loop), so, the text file would look like... (2 Replies)
Hi all,
I have the following shell script code which tries to sftp and writes the log into the log file.
TestConnection ()
{
echo 'Connection to ' $DESTUSERNAME@$DESTHOSTNAME
$SETDEBUG
if ]; then rm $SCRIPT ; fi
touch $SCRIPT
echo "cd" $REMOTEDIR >> $SCRIPT
echo "quit" >>... (10 Replies)
Hi my prob statement is to create a new file or to append to the 1tst file the followign chages.
File 1: txt file.
portfolio No a b c d
abc 1 Any Any Any charString
cds 2 values values values charString
efd 3 can can can charString
fdg 4 come come come charString... (4 Replies)
Hi gurus
I am not a C programmer but I need to read and write files on a computer on LAN using IP address.
Suppose on a computer that has an IP 192.168.0.2
Any help or code example. I did in JAVA using URL, but do not know how to do in ANSI-C.
In java:
-------
URL url = new... (3 Replies)