⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kannel-log-summary

📁 The Kannel Open Source WAP and SMS gateway works as both an SMS gateway, for implementing keyword b
💻
字号:
#!/usr/bin/awk -f## Summarize Kannel log files.## - total number of lines# - start and end times# - smsbox/wapbox requests: total, within the last hour (total and avg/s)# - number of restarts## Lars Wirzenius#BEGIN {	days_in_month[1] = 31	days_in_month[2] = 28	days_in_month[3] = 31	days_in_month[4] = 30	days_in_month[5] = 31	days_in_month[6] = 30	days_in_month[7] = 31	days_in_month[8] = 31	days_in_month[9] = 30	days_in_month[10] = 31	days_in_month[11] = 30	days_in_month[12] = 31	"date -u '+%Y-%m-%d %H:%M:%S'" | getline nowstr	now = secs(nowstr)	new_request_age = 3600 * 4	new_restart_age = 3600 * 24}FILENAME != prev_filename {	if (prev_filename) {		lines = NR - prev_nr		report(prev_filename, lines, starts, ends, requests, 			new_requests, restarts, new_restarts)	}	prev_filename = FILENAME	prev_nr = NR	starts = substr($0, 0, 20)	requests = 0	new_requests = 0	restarts = 0	new_restarts = 0}/INFO: Added logfile `.*' with level/ {	++restarts	if (now - secs($0) <= new_restart_age)		++new_restarts}/INFO: Starting to service <.*> from <.*> to <.*>$/ ||/INFO: WSP: Fetched <.*>$/ {	++requests	if (now - secs($0) <= new_request_age)		++new_requests}/^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/ {	ends = substr($0, 0, 20)}END {	if (prev_filename)		report(prev_filename, NR - prev_nr, starts, ends, requests,			new_requests, restarts, new_restarts)}function report(filename, lines, starts, ends, requests, new_requests, \restarts, new_restarts) {	duration = secs(ends) - secs(starts)	avgperday = requests / (duration / 86400)	persec = new_requests / new_request_age	print "File:", filename	print "Lines:", lines	print "Starts:", starts	print "Ends:", ends	print "Duration:", secs2str(duration)	print "Restarts:", restarts	print "Recent restarts:", new_restarts, "(in the last", \		new_restart_age/3600, "hours)"	if (requests > 0) {		print "Requests:", requests, "total", \			avgperday, "average per day"		print "Recent requests (last", new_request_age/3600, \			"hours):", new_requests		print "Recent average per second:", persec	}	print ""}function secs2str(s) {	days = idiv(s, 86400)	s -= days * 86400	hours = idiv(s, 3600)	s -= hours * 3600	mins = idiv(s, 60)	s -= mins * 60	return days "d " hours "h " mins "m " s "s"}function secs(timestamp) {	year = substr(timestamp, 1, 4)	mon = substr(timestamp, 6, 2)	day = substr(timestamp, 9, 2)	hour = substr(timestamp, 12, 2)	min = substr(timestamp, 15, 2)	sec = substr(timestamp, 18, 2)	return sec + min*60 + hour*3600 + (day-1)*86400 + \	       mon2secs(mon, year) + year2secs(year)}function mon2secs(mon, year) {	days = 0	mon = mon + 0 # make sure it is a number	for (m = 1; m < mon; ++m)		days += days_in_month[mon]	if (mon > 2 && isleap(year))		++days	return days * 86400}function year2secs(year) {	s = 0	for (y = 1970; y < year; ++y) {		if (isleap(year))			s += 366 * 86400		else			s += 365 * 86400	}	return s}function isleap(year) {	return (year % 4) == 0 &&		((year % 100) != 0 || (year % 400) == 0)}function idiv(a, b) {	# assume a >= 0, b > 0	for (i = 0; a > b; ++i)		a -= b;	return i}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -