perl 快速解决配置文件错误的问题

因为一些绑定 ip 地址配置错误,导致服务器的 rpm 包在迁移到别的机器以后无法启动,重新打包 rpm 需要等一段时间,所以我想到了用脚本来修改已经安装上的配置文件。基本思路是先用 grep 找到有问题的配置文件,然后逐一替换。

1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env perl
# 找到需要修改的配置文件
my @files = `grep '10.44.155' -rn /opt/nspm/ -l | grep -v etcd | grep -v bin`;
foreach my $file (@files) {
# 替换配置文件内容, sed 4.2.2 版本的正则有点 bug ,改用 perl
chomp($file);
printf "%s\n","perl -p -i -e 's/10.44.155.[0-9]{1,3}/127.0.0.1/g' $file";
system("perl -p -i -e 's/10.44.155.[0-9]{1,3}/127.0.0.1/g' $file");
}
# 批量重启服务
system("check | awk '{print $1}' | grep nspm | xargs -I {} systemctl restart {}");

执行脚本以后,果然服务都能启动成功啦。