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

相關推薦

  • LAMP及nfs、samba的綜合練習

    練習一: 配置第一臺主機:服務端共享目錄: [root@localhost /]# yum install nfs-utils [root@localhost /]# systemctl start rpcbind [root@localhost /]# sy…

    Linux干貨 2016-10-24
  • 第六周博客作業

                   1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; %s@^[[:space:]]\+[^[:…

    Linux干貨 2016-12-05
  • linux文件管理及bash的基本特性

    一、常用的文件和目錄管理命令1、pwd命令:用來顯示當前的工作目錄語法格式:直接輸入pwd回車顯示當前的工作目錄示例:用pwd命令顯示當前的工作目錄[root@suyiwen ~]# pwd/root2、mkdir命令:用來創建目錄文件語法格式:mkdir [OPTION]… DIRECTORY…常用option:-m,用來指定目錄的…

    Linux干貨 2018-03-11
  • 常見的文本處理工具及正則表達式的相關知識

    1.cat命令使用詳解 cat [option]… [file]… -A equivalent=vET -b 非空行編號 -E 行為顯示$ -n 顯示所有行的行號 -s 行號并壓縮連續空行為一行 -T 顯示tab為^M 實例:顯示a文件的行號及所有控制符 2.(1)head使用詳解 head -n x 顯示前x行 head -c x …

    Linux干貨 2016-08-07
  • inode 與 block

    iNode:索引節點(index node) iNode是用來存儲數據屬性信息的,iNode包含的屬性包括:文件大小屬組歸屬的用戶組讀寫權限文件類型修改時間指向文件實體的指針功能(iNode節點和block的對應關系)但是,iNode不包括文件名 iNode小結: 磁盤分區格式化為ext4文件系統后會生成一定數量的iNode和block iNode是索引節點…

    Linux干貨 2017-07-18
  • 硬鏈接和軟鏈接的區別

    硬鏈接和軟鏈接在文件系統實現上的區別決定了兩者之間功能上的不同,也就是說硬鏈接和軟鏈在文件系統上兩者實現的方式不同,讓其各自具有不同的功能和特色,也決定了各自的優點和缺點。接下同文件系統上創建硬鏈接和軟鏈接看各自的特點。 一文件系統上創建硬鏈接 下面命令是在文件系統上創建一個硬鏈接: ~]# ln test /testdir/t…

    Linux干貨 2016-10-29

評論列表(2條)

  • stanley
    stanley 2015-07-27 23:02

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

    • wangtiejiang
      wangtiejiang 2015-07-27 23:46

      @stanley多謝?。?/p>

欧美性久久久久