I'm trying to add some text to the end of a few files. I have made a file, where I have 5 servername. Each servername corresponds to a separate config file. (The path of these config files is not known).
I am using below code to get the file path,
MyCode:
#!/bin/bash
for i in $(cat serverlist-file | while read f; do find . -name "*$f*"; done);
do
echo $i
done
Output:
/data/servers/customer01/server01.cfg
/data/servers/customer01/server02.cfg
/data/servers/customer02/server03.cfg
/data/servers/customer03/server04.cfg
/data/servers/customer03/server05.cfg
I am using below code to get the list of servers,
MyCode:
#!/bin/bash
for j in $(cat serverlist-file);
do
echo $j
done
Output:
server01
server02
server03
server04
server05
Now I want to edit those config files and add text to it.
I am using below code to add the required text:
#!/bin/bash
for i in $(cat serverlist-file | while read f; do find . -name "*$f*"; done);
do
for j in $(cat serverlist-file);
do
sed -i -e "\$a\
this\ is\ a\ config\ file\nfor\ $j" $i
done
done
Expected Output:
/data/servers/customer01/server01.cfg
this is a config file
for server01
/data/servers/customer01/server02.cfg
this is a config file
for server02
/data/servers/customer02/server03.cfg
this is a config file
for server03
/data/servers/customer03/server04.cfg
this is a config file
for server04
/data/servers/customer03/server05.cfg
this is a config file
for server05
Edit for a reply to @ShawnMilo:
I am trying to bulk add some config to some nagios config files, but not to all server config files.
So, searching with find . -name '*.config' isn't going to work, because then all the config files will get edited. I only want specific files to get edited, just the servers from the serverlist-file.
Nagios configs need to have the hostname of the server in them, like:
define service {
use generic-service
host_name server01
service_description SSH
contact_groups linux
check_command check_something
}