用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)
上一篇 2015-07-27 22:52
下一篇 2015-07-27 23:01

相关推荐

  • OpenStack Glance安装配置过程记录

    Glance是作为OpenStack的虚拟机的Image(镜像)服务, 它提供了一系列的REST API, 用来管理、查询虚拟机的镜像, 它支持多种后端存储介质, 例如用本地文件系统作为介质、Swift(OpenStack Object Storage)作为存储介质或者S3兼容的API作为存储介质。 Glance作为OpenStack的一个核心的系统, 被设…

    2017-09-14
  • 文件系统挂载

    文件系统挂载 文件系统管理: 将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为称之为挂载;  解除此关联关系的过程称之为卸载;  把设备关联挂载点:Mount Point mount  卸载时:可使用设备,也可以使用挂载点 umount  注意:挂载点下原有文件在挂载完成后…

    Linux干货 2015-12-16
  • LVM理论及实践

    LVM综述创建LV创建PV:pvcreate DEVICES创建VG:vgcreate VG_NAME PV_DEVICES创建lv格式化:mkfs.ext4 /dev/vg0/lv0挂载LVM的扩展扩展LV:lvextend扩展后检查挂载文件夹大小,发现扩展前后没有变化这是因为硬盘的修改需要同步:resize2fs /dev/vg0/lv0假设这时候VG的…

    Linux干货 2016-09-19
  • ftp服务器介绍与配置

    一、 ftp服务,File Transfer Protocal 文件传输协议      1. ftp基于tcp协议,C/S架构          Server: wu-ftpd, proftpd ,pureftp,vsf…

    Linux干货 2015-06-21
  • rpm&yum

    软件包管理 软件运行环境 软件包基础 Rpm包管理 Yum管理 定制yum仓库 编译安装 ABI 应用程序的二进制接口,和操作系统相关,一个程序二进制编好了,想要在你的系统上跑,要符合你的操作系统的接口标准Windows:PE  linux:ELF WINDOWS和LINUX二进制程序是不兼容的 库级别的虚拟化 Linux:WINE 可以让Windows程序…

    Linux干货 2018-01-02
  • centos 7 修改sshd服务默认端口号

    由于最近sshd服务默认端口号22被匿名进行试探性的进行登入,为防止匿名用户再次进行试探性的登入,将sshd服务的默认端口号进行修改。 环境:centos 7.3  xshell 思路:先将sshd的被指文件进行修改,把sshd服务的默认端口号修改为所需要的端口号,然后重启sshd服务,发现重启报错。找其原因是应为selinux不允许自定义sshd…

    Linux干货 2017-04-06

评论列表(2条)

  • stanley
    stanley 2015-07-27 23:02

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

    • wangtiejiang
      wangtiejiang 2015-07-27 23:46

      @stanley多谢!!