簡介
TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議)是TCP/IP協議族中的一個用來在客戶機與服務器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。端口號爲69。
Rsyslog是一個自由軟件,GPL的lincesed加強的syslogd。其中,它提供了MySQL和徹底可配置的輸出格式(包括大時間戳)的支持。 Rsyslog發起Rainer的格哈茨。據叉從標準的sysklogd包。rsyslog項目的目標是提供一個更可靠的系統日誌守護進程和配置。所謂「可靠」,是指支持如TCP或RFC 3195(系統日誌可靠)可靠的傳輸模式。咱們這樣作並不意味着不可靠的sysklogd包。
1、環境介紹
路由器IP:10.2.0.65
服務器(Linux):10.2.0.68
2、tftp配置
[root@localhost ~]# yum -y install tftp*
配置tftp
[root@localhost ~]# vim /etc/xinetd.d/tftp
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /Routing -c
per_source = 11
cps = 100 2
flags = IPv4
}
重啓服務
[root@localhost ~]# service xinetd restart
查看服務器是否正常啓動
[root@localhost ~]# ps -ef | grep xinetd | grep -v grep
root 27863 1 0 Aug13 ? 00:00:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
[root@localhost ~]# lsof -i:514
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 8971 root 3u IPv4 2099134 0t0 UDP *:syslog
rsyslogd 8971 root 4u IPv6 2099135 0t0 UDP *:syslog
3、配置rsyslog服務
[root@localhost ~]# vim /etc/sysconfig/rsyslog
SYSLOGD_OPTIONS="-r -x -m 0"
加上"-r" 表示接收遠程的日誌
[root@localhost ~]# vim /etc/rsyslog.conf
將這兩行的註釋去掉
$ModLoad imudp.so
$UDPServerRun 514
local7.* /Routing/Cisco.log
注:local7的定義(使用tcpdump查看)
[root@localhost ~]# tcpdump host 10.2.0.65 and udp port 514
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
13:53:11.202058 IP 10.2.0.65.vat > 10.2.0.68.syslog: SYSLOG local7.info, length: 110
13:53:14.032234 IP 10.2.0.65.vat > 10.2.0.68.syslog: SYSLOG local7.warning, length: 453
13:53:14.033748 IP 10.2.0.65.vat > 10.2.0.68.syslog: SYSLOG local7.warning, length: 412
13:53:16.202211 IP 10.2.0.65.vat > 10.2.0.68.syslog: SYSLOG local7.info, length: 110
最後重啓啓動rsyslog服務
[root@localhost ~]# service rsyslog restart
4、結果驗證
[root@localhost ~]# tailf /Routing/Cisco.log
看是否能夠正常打印日誌。
5、日誌切割
將Cisco.log文件爲每一個文件10000行的文件。
#!/bin/bash
DATE_LOG=`date -d yesterday +%F`
LOG_DIR="/logs/Routing/$DATE_LOG"
if [ ! -e /logs/$DATE_LOG ];then
mkdir -p /logs/Routing/$DATE_LOG
fi
lines=`wc -l /Routing/Cisco.log | awk -F " " '{print $1}'`
i=1
file=1
while [ $i -lt $lines ]
do
i2=`expr $i + 9999`
sed -n "${i},${i2}p" /Routing/Cisco.log > /logs/Routing/$DATE_LOG/Cisco_$file.log
i=`expr $i2 + 1`
file=`expr $file + 1`
done
a=`echo $?`
if [ "$a"x == "0"x ];then
> /Routing/Cisco.log
fi
cd $LOG_DIR
tar zcvf "$DATE_LOG".tar.gz *.log
rm -rf *.log