博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell脚本批量监控Linux server配置文件的更改
阅读量:6482 次
发布时间:2019-06-23

本文共 1783 字,大约阅读时间需要 5 分钟。

    某些情况下,自己或同事修改了某处系统设置,但由此所引发的问题可能一段时间以后才会暴露,由于记不清之前改过哪些文件、改了哪些内容,解决问题时可能走弯路。于是写了一个小脚本以特定频率来监控常见系统配置文件,如发生变化,则邮件通知管理员。

    这里小发散一下,笔者习惯在内网单独弄一台server,给予其免秘钥登录所有服务器额权限,以便批量管理server。并且统计好一个文本文件,以”web1-x.x.x.x“每行一条记录的形式将所有server主机名和IP信息搜集于此。以备各种批量任务脚本引用。

    注:这台内网管理server权限巨大,所以即便在内网,其密码复杂度、防火墙等安全措施也不容忽视。

下面是我当前监控的配置文件,记录于server_conf.txt文件

1
2
3
4
5
6
7
8
9
10
11
12
/var/spool/cron/root
/etc/fstab
/etc/sysconfig/network-scripts/ifcfg-em1
/etc/sysconfig/network-scripts/ifcfg-em2
/etc/sysconfig/network
/etc/hosts
/etc/resolv
.conf
/etc/sudoers
/etc/selinux/config
/etc/sysconfig/iptables
/etc/ssh/sshd_config
/root/
.
ssh
/authorized_keys

下面看脚本内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/sh
 
for 
ip_server 
in 
$(
cat 
/shells/ips
.txt)  
#记录局域网的所有主机ip和主机名
  
do
  
(
  
ip=$(
echo 
$ip_server|
awk 
-F 
'-' 
'{print $2}'
)   
#获取各server IP
 
#rsync -a -e  /shells/server_conf.txt $ip:/shells/    ###初次执行以及被监控的文件列表有修改时才需同步
 
  
ssh 
$ip '
          
tmp_dir=
/var/log/check_conf
;    
###创建用于存放‘上一次的’配置文件的目录
 
          
if 
[ ! -d 
"$tmp_dir" 
];
          
then
              
mkdir 
$tmp_dir;
          
fi
;
 
          
for 
conf_file 
in 
$(
cat 
/shells/server_conf
.txt);     
###获取各配置文件绝对路径
          
do
              
conf_name=
"${conf_file##*/}"    
###获取文件名,不含目录.这个写法不太常用,某些
awk
无法使用的情况可以用它
 
              
###diff判断内容是否改变,并调整输出格式
              
diff 
$conf_file  $tmp_dir/$conf_name.last > 
/dev/null
;
              
if 
[ $? != 0 ];
              
then
                  
echo 
-e 
"diff $conf_file  $conf_name.last\n-------------------------"
;
                  
diff 
$conf_file  $tmp_dir/$conf_name.last;
              
fi
;
              
###将现在的配置文件同步到$tmp_dir以备下一次对比
              
rsync 
-a $conf_file $tmp_dir/$conf_name.last > 
/dev/null
;
          
done
;' &> 
/tmp/
$ip.tmp
 
  
if 
[ $(
cat 
/tmp/
$ip.tmp|
wc 
-l) -gt 1 ];
then
    
mailx -s 
"$ip_server conf_file modified" 
monitor@xxxx.com < 
/tmp/
$ip.tmp
  
fi
  
)&    
###以子shell形式达到for循环并行的效果
done
wait

效果截图

     本文转自kai404 51CTO博客,原文链接:http://blog.51cto.com/kaifly/1703701,如需转载请自行联系原作者
你可能感兴趣的文章
html5页面怎么向上滑了,【h5页面如何制作】html5手机H5页如何使线比1像素更细?不翻页直接滑动翻页的h5是怎么制作的?关于H5页面的制作如何自己写代码?...
查看>>
番禺html5响应式网站,41个响应式HTML5免费网站模板
查看>>
NDK编译错误expected specifier-qualifier-list before...
查看>>
CentOS(5.8/6.4)linux生产环境若干优化实战
查看>>
iOS开发那些事--编写OCUnit测试方法-应用测试方法
查看>>
演示:带时间ACL的配置
查看>>
1.05.体验-Cisco UC-基本功能 v1.1(请-下载-附件(百度云盘)! 有惊喜!)
查看>>
Setting Up Flume High Availability
查看>>
Java 8中用java.time.LocalDate全面代替老旧的Date,Calendar类
查看>>
cmd命令大全 新手入门
查看>>
ESXi 的Guest OS 如何从LUN上释放空间
查看>>
使用duplicate创建dataguard
查看>>
LVS+Keepalived相关参考资料
查看>>
Docker容器管理之Kubernetes
查看>>
Redis 3.0.1 安装和配置
查看>>
hadoop的一些配置结果截图
查看>>
产品经理利器之axure rp
查看>>
RedHat 6 配置iSCSI服务
查看>>
Oracle tablespace maxsize解析
查看>>
测试人员,你的价值不是你的工资
查看>>