【发布时间】:2021-02-12 09:14:11
【问题描述】:
我正在尝试在几个文件的末尾添加一些文本。 我制作了一个文件,其中有 5 个服务器名称。每个服务器名对应一个单独的配置文件。 (这些配置文件的路径未知)。
我正在使用下面的代码来获取文件路径,
我的代码:
#!/bin/bash
for i in $(cat serverlist-file | while read f; do find . -name "*$f*"; done);
do
echo $i
done
输出:
/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
我正在使用下面的代码来获取服务器列表,
我的代码:
#!/bin/bash
for j in $(cat serverlist-file);
do
echo $j
done
输出:
server01
server02
server03
server04
server05
现在我想编辑这些配置文件并向其中添加文本。
我正在使用下面的代码来添加所需的文本:
#!/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
预期输出:
/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
编辑回复@ShawnMilo:
我正在尝试将一些配置批量添加到一些 nagios 配置文件中,但不是添加到所有服务器配置文件中。
因此,使用 find 进行搜索。 -name '*.config' 不起作用,因为所有配置文件都将被编辑。 我只想编辑特定的文件,只需要编辑 serverlist-file 中的服务器。
Nagios 配置需要在其中包含服务器的主机名,例如:
define service {
use generic-service
host_name server01
service_description SSH
contact_groups linux
check_command check_something
}
【问题讨论】: