shell脚本批量监控Linux server配置文件的更改
2015-10-17 00:27
525 查看
某些情况下,自己或同事修改了某处系统设置,但由此所引发的问题可能一段时间以后才会暴露,由于记不清之前改过哪些文件、改了哪些内容,解决问题时可能走弯路。于是写了一个小脚本以特定频率来监控常见系统配置文件,如发生变化,则邮件通知管理员。
这里小发散一下,笔者习惯在内网单独弄一台server,给予其免秘钥登录所有服务器额权限,以便批量管理server。并且统计好一个文本文件,以”web1-x.x.x.x“每行一条记录的形式将所有server主机名和IP信息搜集于此。以备各种批量任务脚本引用。
注:这台内网管理server权限巨大,所以即便在内网,其密码复杂度、防火墙等安全措施也不容忽视。
下面是我当前监控的配置文件,记录于server_conf.txt文件
这里小发散一下,笔者习惯在内网单独弄一台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效果截图
相关文章推荐
- Shell 脚本编程陷阱
- Linux学习 -- Shell基础 -- Bash基本功能
- 自动登录多个IDC机房(expect+shell)
- Linux学习 -- Shell基础 -- 概述
- 【转载】HBase基本概念和hbase shell常用命令用法
- shell三剑客之awk(一)
- 小议:利用PowerShell配置SharePoint Report Service出错的解决方案
- java通过thrift调用python远程执行shell
- win7 cmd终端连接android手机运行adb shell脚本命令
- shell脚本编程:bash shell中的条件判断
- shell bash使用,包括判断文件或文件夹是否存在举例
- 《 Linux Shell 》笔记之sed
- Linux重新学习--shell--IO
- 第 三 十 二 天:shell 编 程 之 分 发 系 统 (expect)
- ProcessShellCommand(cmdInfo)函数功能
- SHELL echo 不换行输出(刷新输出)
- shell 间接变量引用的问题
- shell编程(六)流程控制
- 如何通过PowerShell 部署Feature(SharePoint 2013)
- shell编程(五)条件判断