程序员开发实例大全宝库

网站首页 > 编程文章 正文

Apache日志信息提取

zazugpt 2025-02-15 01:52:47 编程文章 12 ℃ 0 评论

#!/bin/bash


# 检查日志文件是否存在并可读

if [[ ! -f access.log ]]; then

echo "Error: access.log file not found or not readable."

exit 1

fi


# 定义关联数组,用于存储每个IP的访问次数、URL列表以及每个URL的访问次数

declare -A ip_count

declare -A ip_urls

declare -A url_count


# 初始化最大访问次数和对应的URL

max_count=0

max_url=""


# 读取日志文件,一次性完成所有统计

while read -r line; do

# 提取IP地址和URL

ip=$(echo "$line" | awk '{print $1}')

url=$(echo "$line" | awk '{print $7}')


# 统计每个IP的访问次数

((ip_count[$ip]++))


# 统计每个IP访问的URL

if [[ ${ip_urls[$ip]} ]]; then

ip_urls[$ip]+=",$url"

else

ip_urls[$ip]=$url

fi


# 统计每个URL的访问次数

((url_count[$url]++))


# 更新最频繁访问的URL

if [[ ${url_count[$url]} -gt $max_count ]]; then

max_count=${url_count[$url]}

max_url=$url

fi

done < access.log


# 输出每个IP的访问次数

for ip in "${!ip_count[@]}"; do

echo "$ip: ${ip_count[$ip]}"

done


# 输出每个IP访问的URL

for ip in "${!ip_urls[@]}"; do

echo "$ip: ${ip_urls[$ip]}"

done


# 如果有最频繁访问的URL,则输出

if [[ $max_count -gt 0 ]]; then

echo "Most frequent URL: $max_url (count: $max_count)"

else

echo "No URLs found in the log file."

fi

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表