云计算学习100天-第17天
日志分析脚本
分析Apache日志,统计每个IP访问服务器的次数
#/bin/bash#日志文件格式如下:#201.28.117.13 - - [08/Apr/2024:11:45:16 +0800] \"GET / HTTP/1.1\" 200 615 \"-\" \"curl/7.61.1\"awk \'{ip[$1]++}END{for(i in ip){print ip[i],i }}\' /var/log/httpd/access_log
分析Nginx日志,统计每个IP访问服务器的次数
假设nginx日志在/usr/local/nginx/logs/access.log
#/bin/bashawk \'{ip[$1]++}END{for(i in ip){print ip[i],i }}\' /usr/local/nginx/logs/access.log
网络连接分析,统计当前系统tcp和udp连接个数(使用ss可以查看网络连接状态)
[root@new ~]# ss -Hanutp
udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:* users:((\"chronyd\",pid=495,fd=5))
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:((\"sshd\",pid=529,fd=3))
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:((\"nginx\",pid=9714,fd=6),(\"nginx\",pid=9713,fd=6))
tcp ESTAB 0 0 192.168.88.10:22 192.168.88.254:50622 users:((\"sshd\",pid=622,fd=4),(\"sshd\",pid=620,fd=4))
版本1:不使用awk数组的版本
#/bin/bash# 获取TCP连接数 tcp_count=$(ss -an | grep ^tcp | wc -l) # 获取UDP连接数 udp_count=$(ss -an | grep ^udp | wc -l) # 输出结果 echo \"TCP 连接数: $tcp_count\" echo \"UDP 连接数: $udp_count\"
版本2:使用awk数组的版本
#/bin/bash# 获取TCP连接数 tcp_count=$(ss -an | awk \'/^tcp/{ip[$1]++}END{for(i in ip){print ip[i]}}\') # 获取UDP连接数 udp_count=$(ss -an | awk \'/^udp/{ip[$1]++}END{for(i in ip){print ip[i]}}\') # 输出结果 echo \"TCP 连接数: $tcp_count\" echo \"UDP 连接数: $udp_count\"