记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。

内网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》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论