自动巡检脚本(仅作记录用)
巡检八台服务器,最后生成结果到第一台服务器(称A服务器)
1 设置scp免密
在除A外的服务器上执行命令:ssh-keygen -t rsa,遇到提示回车便可。 在 ~/.ssh/ 目录下,可以看到生成了id_rsa.pub文件 然后将除A外的其他服务器秘钥复制到A服务器~/.ssh/authorized_keys文件中保存便可。 这样A服务器到B服务器就实现了免密登录及传输。
2 部署巡检脚本
在这8台服务器分别部署巡检脚本,代码如下
#!/bin/bash hostname=$HOSTNAME date=`date +%c` filename=10.1.150.37_`date +%Y%m%d`.txt tempfile="/home/$filename" if [ ! -f "$tempfile" ];then touch "$tempfile" fi echo "-----------磁盘使用情况(10.1.150.37)-----------------------------" >>$tempfile df -h >>$tempfile scp -P 21006 $tempfile root@10.1.241.2:/home/checklogs/ rm -rf $tempfile
设置文件名为服务器IP(也可以为主机名hostname)+日期。 在文件内写入df -h的内容,然后通过scp传输到目标服务器A。 传输完成之后并删除该文件。
3 设置定时任务
输入命令 crontab -e 进入编辑页面(通vim操作): 输入定时任务(每天早上10:30执行 /home/check.sh脚本): 30 10 * * * sh /home/check.sh
4 整合8台服务器的巡检结果
在A服务器上部署该脚本,按要求的顺序写入文件(如果没有顺序要求,则不用这么麻烦),并删除8台服务器前一天的巡检结果。
#!/bin/bash TIME=$(date "+%Y-%m-%d") filename=A_$TIME.txt tempfile="/home/checklogs/$filename" cat /home/checklogs/10.1.150.34_`date +%Y%m%d`.txt >> $tempfile cat /home/checklogs/10.1.150.35_`date +%Y%m%d`.txt >> $tempfile cat /home/checklogs/10.1.150.36_`date +%Y%m%d`.txt >> $tempfile cat /home/checklogs/10.1.150.37_`date +%Y%m%d`.txt >> $tempfile cat /home/checklogs/192.168.205.2_`date +%Y%m%d`.txt >> $tempfile cat /home/checklogs/192.168.205.3_`date +%Y%m%d`.txt >> $tempfile cat /home/checklogs/192.168.205.4_`date +%Y%m%d`.txt >> $tempfile cat /home/checklogs/192.168.205.5_`date +%Y%m%d`.txt >> $tempfile rm -rf /home/checklogs/*`date -d -1 day +%Y%m%d`.txt
如下图A开头的文件为get.sh整合好的巡检结果。 其余8个文件为各个服务器传输过来的巡检结果,get.sh会删除前一天的这些文件。 并将A服务器上的get.sh也设置为定时任务 这样每天早上10:40便可查看巡检结果了……
