用shell脚本实现每天定时收集全网日志到一台服务器

需求


现在公司有这样一个需求,需要收集每天全网运行业务的设备上的某个特定目录底下的日志到一台服务器(这台服务器我们简称logserver),这并在这台logserver上生成以日期为名字的目录

解决思路:


在logserver的crontab里设置两个脚本,在当日晚上23:30执行脚本1收集当日即将被删除的全网脚本;在并在早上8:30执行脚本2,收集昨日全网剩余的脚本。先测试对端设备是否能ping通,如果不行输出ping不通设备到特定日志,以备运维查看,再利用sshkey免密码登陆设备自动scp达到拷贝日志的目的。

以下是脚本正文及相应注释

脚本1


#!/bin/bash
date=`date  +%Y%m%d`
mkdir /log/$date/sleep 10
cp -r /script/logcapture/directory/*  /log/$date/
#/script/logcapture/directory/*下面都是目录,写了很多日志类型(rtsp,avsdb,protocoltiming等等,都是视频服务器上的日志类型,这里不作具体解释),日志类型底下再新建了设备名字的空目录
sleep 10 
for d in `cat /script/logcapture/masterserver`
#/script/logcapture/masterserver下面都是设备名字,事先做了无密码登陆(拷贝sshkey),直接ssh设备名字便能登陆设备,以下的masterserver,allservers与之类似,都是存放设备名称的 
do if ping -c 2 $d判断是否ping命令是否能成功执行,如果ping两次不成功自动输出"remote server is unavailable" 
then          
scp root@$d:/arroyo/log/rtsp.log.$date* /log/$date/rtsp/$d/  
else
     echo "remote server $d is unavailable"  >>  /script/logcapture/problemserver.log
#输出不成功信息至特定日志
fi
done

脚本2 


#!/bin/bash
date=`date -d yesterday +%Y%m%d`
for a in `cat /script/logcapture/vault`
#/script/logcapture/vault下面都是设备名字,事先做了无密码登陆,直接ssh设备名字便能登陆设备   
do 
if ping -c 2 $a    
then 
scp root@$a:/arroyo/log/avsdb.log.$date* /log/$date/avsdb/$a/
scp root@$a:/arroyo/log/protocoltiming.log.$date* /log/$date/protocoltiming/$a/
scp root@$a:/arroyo/log/c2k.log.$date* /log/$date/c2k/$a/  
else     
	echo "remote server $a is unavailable"  >>  /script/logcapture/problemserver.log
fi
done
sleep 5
for b in `cat /script/logcapture/masterserver`
 do
 	if ping -c 2 $b 
 		then 
 		scp root@$b/arroyo/log/avsdb.log.$date* /log/$date/avsdb/$b/
 		scp root@$b:/arroyo/log/protocoltiming.log.$date* /log/$date/protocoltiming/$b/
 		scp root@$b:/arroyo/log/c2k.log.$date* /log/$date/c2k/$b/
 		   else
 		        echo "remote server $b is unavailable"  >>  /script/logcapture/problemserver.log
 		    fi
done
sleep 5
for a in `cat /script/logcapture/allservers`
 do
 	if ping -c 2 $b 
 		then      
 		scp root@$a:/arroyo/log/avsdb.log.$date* /log/$date/avsdb/$c/          
 		scp root@$a:/arroyo/log/protocoltiming.log.$date* /log/$date/protocoltiming/$c/          
 		scp root@$a:/arroyo/log/c2k.log.$date* /log/$date/c2k/$c/ 
 		 else     
 		 	echo "remote server $c is unavailable"  >>  /script/logcapture/problemserver.log
 		 fi
 done

大概就是这样,有问题及改进建议请大家指出用shell脚本实现每天定时收集全网日志到一台服务器

原创文章,作者:wangtiejiang,如若转载,请注明出处:http://www.178linux.com/6564

(3)
wangtiejiangwangtiejiang
上一篇 2015-07-27 22:52
下一篇 2015-07-27 23:01

相关推荐

  • 系统自动化安装

    本章内容 系统安装过程配置anaconda自动化安装系统 安装程序 CentOS系统安装 系统启动流程: bootloader–>kernel(initramfs)–>rootfs–>/sbin/init anaconda: 系统安装程序 tui: 基于图形库curses的文本窗口 gui:图形窗口 安装程序启动过程 MBR…

    Linux干货 2016-09-19
  • Linux基础解析;echo;man;centos;runlevel;PS1;screen;shell 倒三角;date -d等命令—-fazion blog at22.July

    Linux基础解析 fazionlan blog in 178Linux.July 20nd. 内核、版本信息 # uname -a                 &n…

    Linux干货 2016-07-29
  • 用户管理

    用户管理 用户通过uid来识别,用户的uid是全局唯一,Linux用户分三大类: 用户类别可以分为 管理员 系统用户 普通用户 ——管理员的id为0,系统用户的id为1-499,一般用户的id为500- 组也是一样(centos6.9和centos7.3 id编号有所不同)上述是centos6.9的id编号。 管理员账户:root,可…

    2017-06-01
  • corosync + pacemaker搭建高可用mysql

    一、实验图     二、环境准备  1)确保时间同步 [root@SQL1 ~]# crontab -e  */5 * * * * /usr/sbin/ntpdate 172.16.2.15 [root@SQL2 ~]#…

    Linux干货 2015-06-30
  • Linux的用户,组及文件权限管理

    Linux用户与组的创建,删除,属性修改,文件权限管理

    Linux干货 2018-02-24
  • 初学Linux之熟悉文件系统

    每一个具有存储数据功能的设备,都是有文件系统的,文件系统,规定了数据的储存的策略,以便数据有条不紊的记录保存。为了深入的学习Linux,我们必定要了解其文件系统,其中包括:文件系统结构元素;文件的创建和查看;文件删除、复制、移动等操作;管理文件的方式;软链接和硬链接。

    2017-11-26

评论列表(2条)

  • stanley
    stanley 2015-07-27 23:02

    帮你修正了格式,应该比以前好些

    • wangtiejiang
      wangtiejiang 2015-07-27 23:46

      @stanley多谢!!