shell脚本批量监控Linux server配置文件的更改

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

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

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

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

/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

下面看脚本内容

#!/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

效果截图
image
image

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值