云计算学习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/bash
awk '{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"