用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.www58058.com/6564

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

相關推薦

  • Linux文件系統總結(7.4課上作業)

    一、什么是文件系統         文件系統是對一個存儲設備上的數據和元數據進行組織的機制。它使用文件和樹形目錄的抽象邏輯概念代替了硬盤和光盤等物理設備使用的數據塊的概念,用戶使用文件系統來保存數據而不必關心數據實際保存在硬盤(or光盤)的地址為多少數據塊上,只需要記住這個文件的…

    Linux干貨 2016-07-10
  • Linux文件系統

    文件是什么?存儲空間內存儲的有邊界的一段流式數據,對數據可以做到按名存取。眾多文件是如何有效的組織起來?1.  平面化把眾多文件放在一起。當想查找某個文件時,需要遍歷所有文件,當文件數目足夠多的時候,查找一個文件將會非常慢,效率極低。2.  層級結構化根據后續查找文件的篩選條件進行分類,逐層放置,通常要查找一個文件,只需要從最高層級開始,…

    2017-09-05
  • rpm軟件包管理

    一:二進制應用程序組成部分 二進制文件(which command)、庫文件(ldd `which command`)、配置文件(.conf)、幫助文件(.README)等 二:rpm包文件的組成 rpm文件、rpm元數據(如名稱、依賴性關系等)、安裝或卸載時運行的腳本 三:rpm包數據庫: 1.組成部分(通過 ls /var/lib/rpm 來查…

    2017-08-13
  • zabbix快速創建篩選(sql操作)

        公司由于大量業務調整,尤其是服務器功能和性能的轉變,監控也跟隨這變化,其中操作最為繁瑣的當數zabbix篩選(相信各位從頁面添加的都深感痛苦)于是有了本文。     本文采用的方法是sql操作(由于本人不會php等,無法寫程序直接調用官方api,所以,嘿嘿,不解釋,同時也希望各路大…

    Linux干貨 2015-12-17
  • 網絡26期 第五周作業

    1. 顯示當前系統上root、fedora或user1用戶的默認shell egrep -o “^(root|fedora|user1)\>.*[^:]+$” /etc/passwd | cut -d: -f1,7 2. 找出/etc/rc.d/init.d/functions文件中某單詞后面跟一組小括號的行,形如:hello(…

    2017-03-13
  • 8.1_Linux管道的使用和用戶管理

    什么是管道? 管道就是把命令1的標準輸出發送給命令2的標準輸入,把命令2發的標準輸出發送給命令3的標準輸入。。。 最后一個命令會在當前shell進程的子shell進程中執行用來 管道實現了使用目的單一的小程序,組合小程序完成復雜的任務 管道需要配合其他命令的使用 tr命令的使用,常常用于配合管道     -c或–co…

    Linux干貨 2016-08-10

評論列表(2條)

  • stanley
    stanley 2015-07-27 23:02

    幫你修正了格式,應該比以前好些

    • wangtiejiang
      wangtiejiang 2015-07-27 23:46

      @stanley多謝??!

欧美性久久久久