Linux巡检报告上传到FTP,通过smtp邮件发送139邮箱方法。 |
发表者:admin分类:Devops2017-02-28 11:24:05 阅读[2334] |
内网Linux服务器巡检报告上传到FTP指定目录,通过smtp邮件发送139邮箱方法。
水平有限,供参考,可以使用。
具体服务器环境:
20台服务器Centos6系统,全部位于防火墙后的内网环境中。
其中一台主机A可以上外网。其它主机只能内网访问。
具体方案:
可上网的主机A,配置好smtp邮件客户端,并配置好vsftp功能。
每台主机通过脚本收集巡检报告,然后通过定时任务,使用ftp将报告上传到A主机的ftp目录里面。
最后将所有主机的报告打包发送到指定邮箱中。
具体配置:
A主机,配置vsftp功能,这里就不说了。指定FTP目录为:/home/ftp ,并配置好ftp账号与密码。
然后给A主机配置好巡检报告脚本,可以根据自己情况修改检查项目,本例具体内容如下:
[root@cw ~] #:vi /home/check/report.sh
report_ip=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk 'NR==1 { print $1}'`
report_time=`date`
report_crond=`/etc/init.d/crond status`
report_ntp=`cat /etc/crontab |grep ntpdate`
report_cpu=`uptime`
report_Mem=`free -g`
report_Disk=`df -h`
report_phy_disk=`/opt/MegaRAID/storcli/storcli64 /c0 show|grep DRIVE`
report_Listen=`netstat -lntup |grep java`
report_cwt=`ps -ef|grep -v 'grep java'|grep java`
echo "############################ 主机IP地址 ############################"
echo "主机IP地址信息: $report_ip"
echo ""
echo "############################ 主机系统时间 ##########################"
echo "主机系统时间:$report_time"
echo ""
#echo "############################ 主机CPU负载信息 ######################"
#echo "主机系统1,5,15分钟的平均负载:$report_cpu"
#echo ""
#echo "############################ 定时任务运行状态 #####################"
#echo "$report_crond"
#echo ""
#echo "############################ NTP同步定时任务状态 ##################"
#echo "定时同步时间的命令配置:"
#echo "$report_ntp"
#echo ""
echo "############################ 主机内存信息/GB单位 ###################"
echo "$report_Mem"
echo ""
echo "############################ 主机物理硬盘状态 ######################"
echo "$report_phy_disk"
echo ""
echo "############################ 主机硬盘空间信息 ######################"
echo "$report_Disk"
echo ""
#echo "############################ 核心服务监听端口 #####################"
#echo "$report_Listen"
#echo ""
echo "############################ 核心服务进程信息 ######################"
echo "$report_cwt"
echo ""
然后配置A主机的报告通过脚本上传到本机的FTP目录中去。
[root@cw ~] #:vi /home/check/check.sh
#!/bin/bash
date1=`date +%Y-%m-%d`
date2=`date +%m-%d`
ip1=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk 'NR==1 { print $1}'`
report="${ip1}_${date1}"
mkdir -p /home/ftp/$date2
chown ftp:ftp /home/ftp/$date2
/home/check/report.sh > /home/check/$report.txt
ftp -n<<!
open 192.168.11.192
user ftp ftppwd
binary
cd $date2
prompt
put /home/check/$report.txt $report.txt
close
bye
!
rm -rf /home/check/$report.txt
简单说明下,
A主机,在8点时通过定时任务,先在ftp目录中配置个月+日期的目录,
比如: /home/ftp/02-28 目录,然后修改下目录的权限.
接着生成A主机的巡检报告,格式如:192.168.11.190_2017-02-28.txt
IP加年+月+日的文本。
然后通过ftp功能将本机的巡检报告 如:/home/check/192.168.11.190_2017-02-28.txt
文件上传到ftp对应的当天收集报告的目录: /home/ftp/02-28/192.168.11.190_2017-02-28.txt
最后删除本机上的报告文本。
接下来添加定时任务,具体修改crond配置文件:
[root@cw ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
0 8 * * * root /home/check/check.sh
20 8 * * * root /home/check/sendreport.sh >>/home/check/log.txt 2>&1 &
简单说明下,每天8点,生成报告,并上传到ftp中对应的目录中。
第二个定时任务是,8点20分,将当天收集的所有主机报告通过smtp发送到邮箱中。
接着每台主机都要添加check.sh脚本与report脚本,与A主机相同就可以,不过定时任务时间要调整到8点与8点20分 之间。
然后测试各种主机是否正常生成巡检日志并上传到ftp对应的目录中。
脚本要根据自己的情况修改,如主机IP为192.168.11.191的定时任务脚本,
[oracle@cwdb1 ~]$ cat /home/check/check.sh
#!/bin/bash
date1=`date +%Y-%m-%d`
date2=`date +%m-%d`
ip1=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk 'NR==1 { print $1}'`
report="${ip1}_${date1}"
#mkdir -p /home/ftp/$date2
/home/check/report.sh > /home/check/$report.txt
ftp -n<<!
open 192.168.11.192
user ftpadmin ftpadmin192
binary
cd $date2
prompt
put /home/check/$report.txt $report.txt
close
bye
!
rm -rf /home/check/$report.txt
巡检报告的脚本,根据情况修改内容,这里不说了。
最后给A主机配置SMTP,并发送所有主机的巡检报告。
具体配置smtp方法,这里有说明,请参考 Centos6配置SMTP发送邮件与附件方法。
最后是添加发送邮件的脚本,具体如下:
[root@cw ~]# cat /home/check/sendreport.sh
#!/bin/bash
date1=`date +%Y-%m-%d`
date2=`date +%m-%d`
ip1=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk 'NR==1 { print $1}'`
report="${ip1}_${date1}"
mreport="/home/ftp/report.txt"
ipreport=`ls /home/ftp/$date2|sort -n`
echo "" > $mreport
for i in $ipreport
do
echo "" >> $mreport
cat /home/ftp/$date2/$i >> $mreport
echo "" >> $mreport
echo "" >> $mreport
echo "" >> $mreport
done
echo ""
echo ""
echo `date`
echo "check_report" | mailx -v -s " check_report" -a $mreport xy@139.com
echo `date`
这里在发送smtp邮件是,将所有主机的报告作了合并内容。
当然也可以直接将巡检报告的当天目录直接打包,然后通过smtp邮箱的附件发送到指定邮箱中。
最后当然是要注意,添加定时任务来发送邮件,这里就不说了。
转载请标明出处【Linux巡检报告上传到FTP,通过smtp邮件发送139邮箱方法。】。
《www.micoder.cc》
虚拟化云计算,系统运维,安全技术服务.
Tags: | [阅读全文...] |
最新评论