用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
下一篇 2015-07-27

相关推荐

  • OpenSSL:实现创建私有CA、签署证书请求详解

    一、OpenSSL:CA默认配置信息     1.证书签发机构CA:公共信任CA、私有CA                建立私有CA方式如下: 小范围测试使用openssl、 大…

    Linux干货 2016-04-30
  • 浅谈Linux中的用户和组

    又到了周六,日常写博客的日子。 上周模模糊糊的写了第一篇博客,大概知道了怎么写,但是这周就比以往不同了,脑子中已经有了思路,那写起来就会更加详细易懂。 这周学了很多知识点,但是我想对Linux 用户和组进行详细的描述。 一、用户(Username/UID) 用户分为两种:管理员和普通用户     管理员root  UI…

    2017-07-22
  • Ansible (playbook)

    一、YAML 1.1 YAML介绍 YAML是一个可读性高的用来表达资料序列的格式。YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822等。Clark Evans在2001年在首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。 YAML Ain’t Marku…

    Linux干货 2017-11-01
  • Linux中的用户、组和权限的管理

    一、Linux的安全模型     在Linux中用户登陆时必须提供用户名和密码(用户是由root用户创建的,最初的密码也是root用户设定的)。系统使用用户和群组来控制使用者访问文件和其他资源的权限。每一个文件都一定属于一个用户(一般该用户就是文件的创造者)并与一个群组相关。每一个进程(处理程序)都会与一个用户和群组关…

    Linux干货 2016-08-07
  • 详解用户,组,权限管理

    详解用户,组,权限管理 M21-陆东贵 测试环境:CentOS 7.2 内容介绍: 我们要使用操作系统进行工作,就需要人机交互操作,这时候计算机就需要创建用户,通过用户来实现操作,而且随着用户的增加需要给用户分组,这时候就需要对文件进行权限管理。 需要使用的工具:       用户相关工具:useradd; …

    Linux干货 2016-10-25
  • Mozart的剑(文本处理工具)——贰剑(head、tail、cut、sort、uniq、wc、diff、paste、patch)

    有点拖了,没有好好整理之前的内容,拖延症害死人….. 这次介绍一些有趣的小文本处理工具,可以方便截取文本内容、排序、备份之类的。 head 用法:head [选项]… [文件]… head[OPTION]…[FILE]… 默认将每个指定文件的头10行显示到标准输出。如果指定了多于一个文件,在每一段输…

    Linux干货 2017-08-02

评论列表(2条)

  • stanley
    stanley 2015-07-27 23:02

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

    • wangtiejiang
      wangtiejiang 2015-07-27 23:46

      @stanley多谢!!