Bash : compter les fichiers par date de création
Je voulais mesurer la fréquence des « attaques » en DDoS observées sur mon serveur à partir des fichiers présents dans le dossier /var/log/httpd/mod_evasive.
Modification de l’affichage de la date à l’aide de la commande ls
[root@enfinauchaud ~]# ls -l /var/log/httpd/mod_evasive/ --time-style=+%Y-%m-%d total 64 -rw-r--r-- 1 apache apache 7 2023-05-27 dos-116.202.49.19 -rw-r--r-- 1 apache apache 7 2023-06-02 dos-130.51.41.57 -rw-r--r-- 1 apache apache 7 2023-05-31 dos-176.159.225.108 -rw-r--r-- 1 apache apache 7 2023-05-21 dos-189.206.27.2 -rw-r--r-- 1 apache apache 7 2023-06-04 dos-2001:861:3201:8f0:2fa3:a2c7:4177:14d0 -rw-r--r-- 1 apache apache 7 2023-06-01 dos-2001:861:3201:8f0:3169:86f9:4564:fcf6 -rw-r--r-- 1 apache apache 8 2023-05-03 dos-2001:861:4e80:30f0:f15e:d458:4beb:bf5d -rw-r--r-- 1 apache apache 8 2023-04-29 dos-2a01:cb10:8550:b900:74f8:6d5a:fb94:8a2a -rw-r--r-- 1 apache apache 5 2023-05-17 dos-2a01:e0a:8c0:2c60:7881:f9f4:9fb:55e3 -rw-r--r-- 1 apache apache 7 2023-06-01 dos-37.167.88.51 -rw-r--r-- 1 apache apache 7 2023-05-30 dos-37.170.131.181 -rw-r--r-- 1 apache apache 7 2023-06-01 dos-45.138.114.234 -rw-r--r-- 1 apache apache 8 2023-05-06 dos-51.38.109.141 -rw-r--r-- 1 apache apache 7 2023-05-30 dos-84.239.18.60 -rw-r--r-- 1 apache apache 5 2023-05-19 dos-88.172.22.6 -rw-r--r-- 1 apache apache 7 2023-05-26 dos-92.184.98.221
Awk à la rescousse
J’ignore la ligne n°1. Et je compte à partir de la colonne 6.
[root@enfinauchaud ~]# ls -l /var/log/httpd/mod_evasive/ --time-style=+%Y-%m-%d |awk -F ' ' 'NR>1{a[$6]++}END{for (i in a){print i,a[i]}}'|sort 2023-04-29 1 2023-05-03 1 2023-05-06 1 2023-05-17 1 2023-05-19 1 2023-05-21 1 2023-05-26 1 2023-05-27 1 2023-05-30 2 2023-05-31 1 2023-06-01 3 2023-06-02 1 2023-06-04 11