Vous avez 4 heures

Je me suis dit que ça pourrait être marrant de vous faire participer aux casse-têtes auxquels je suis confronté. Je lance le truc pour voir si ça vous plaît/amuse, si il n’y a pas de retours je remballerai mon idée ha ha.

On m’a demandé de récupérer les logs du 22/01 à partir de 11h40 sur quelques 130 serveurs. On peut utiliser ansible ou un outil de ce type pour balancer la commande sur tous ces serveurs mais comment récupérer tous les logs (ligne entière) à partir de 11h40 ?

Ci-dessous 50 lignes de logs d’un serveur (j’ai trafiqué et tronqué les infos) qui vous serviront à tester la solution que vous proposez, je vous invite à les copier-coller dans un fichier sur votre poste pour effectuer vos tests. Tous les coups sont permis : Scripts (tous langages : Python, Perl…), shell one-liner, site web qui fournit la solution en 1 clic, corruption de l’auteur (je suis hétérosexuel et j’accepte les virements bancaires), etc.

monpetitserveur.net 87.122.70.72 - - [22/Jan/2019:00:54:21 +0100] "POST 
monpetitserveur.net 2a00:1450:1:815:124::1 - - [22/Jan/2019:00:54:22 +0100] "POST 
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:00:55:52 +0100] "GET
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:01:26:23 +0100] "GET
monpetitserveur.net 2a00:1450:1:815:124::1 - - [22/Jan/2019:01:26:23 +0100] "POST
monpetitserveur.net 112.156.104.2 - - [22/Jan/2019:02:12:08 +0100] "POST
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:02:36:39 +0100] "GET
monpetitserveur.net 2a00:1450:1:815:124::1 - - [22/Jan/2019:02:36:40 +0100] "POST
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:02:46:21 +0100] "GET
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:03:46:31 +0100] "GET
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:03:46:34 +0100] "GET
monpetitserveur.net 2a00:1450:1:815:124::1 - - [22/Jan/2019:03:46:34 +0100] "POST
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:03:46:46 +0100] "GET
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:04:26:51 +0100] "GET
monpetitserveur.net 2a00:1450:1:815:124::1 - - [22/Jan/2019:04:26:51 +0100] "POST
monpetitserveur.net 105.204.123.56 - - [22/Jan/2019:05:00:17 +0100] "POST
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:05:27:22 +0100] "GET
monpetitserveur.net 2a00:1450:1:815:124::1 - - [22/Jan/2019:05:27:22 +0100] "POST
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:05:27:22 +0100] "GET
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:05:57:47 +0100] "GET
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:05:57:59 +0100] "GET
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:06:57:41 +0100] "GET
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:08:38:50 +0100] "GET
monpetitserveur.net 2a00:1450:1:815:124::1 - - [22/Jan/2019:08:38:50 +0100] "POST
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:08:39:08 +0100] "GET
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:08:39:23 +0100] "GET
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:08:59:15 +0100] "GET
monpetitserveur.net 2a00:1450:1:815:124::1 - - [22/Jan/2019:08:59:20 +0100] "POST
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:09:06:19 +0100] "GET
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:10:19:40 +0100] "GET
monpetitserveur.net 2a00:1450:1:815:124::1 - - [22/Jan/2019:10:19:41 +0100] "POST
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:10:19:51 +0100] "GET
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:10:49:44 +0100] "GET
monpetitserveur.net 2a00:1450:1:815:124::1 - - [22/Jan/2019:10:49:45 +0100] "POST
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:11:19:51 +0100] "GET
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:11:22:17 +0100] "GET
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:11:40:57 +0100] "GET
monpetitserveur.net 2a00:1450:1:815:124::1 - - [22/Jan/2019:11:40:57 +0100] "POST
monpetitserveur.net 104.48.123.201 - - [22/Jan/2019:12:16:45 +0100] "GET
monpetitserveur.net 84.12.145.4 - - [22/Jan/2019:12:49:41 +0100] "GET
monpetitserveur.net 84.12.154.4 - - [22/Jan/2019:12:49:43 +0100] "GET
monpetitserveur.net 2a00:1450:1:815:124::1 - - [22/Jan/2019:12:49:44 +0100] "POST
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:12:50:02 +0100] "GET
monpetitserveur.net 45.85.135.74 - - [22/Jan/2019:13:15:27 +0100] "GET
monpetitserveur.net 45.85.135.74 - - [22/Jan/2019:13:15:27 +0100] "GET
monpetitserveur.net 42.248.86.23 - - [22/Jan/2019:13:46:11 +0100] "GET
monpetitserveur.net 53.56.8.95 - - [22/Jan/2019:13:48:09 +0100] "POST
monpetitserveur.net 2a00:1450:1:815:124::1 - - [22/Jan/2019:13:48:09 +0100] "POST
monpetitserveur.net 190.18.127.56 - - [22/Jan/2019:20:06:48 +0100] "POST
monpetitserveur.net 2a00:1450:1:815:124::1 - - [22/Jan/2019:20:06:50 +0100] "POST

Vous avez le droit de poser des questions. Je laisse jusqu’à lundi 17h30 puis je fermerai les commentaires, ça laisse du temps pour ceux qui voudraient s’amuser dessus ce week-end. Je fournirai ensuite une solution (la mienne) ci-dessous.

En général on a un temps imparti pour effectuer une tâche : Vous avez 4 heures.


Pour ma part j’ai procédé ainsi awk -F'2019:|:[0-5][0-9][ ]' '($2 >= "11:40") {print}' file.log, certainement pas la solution la plus simple ni la plus élégante mais elle fonctionne.

La solution la plus sexy à mes yeux vient de Maxime avec grep -vE "22/Jan/2019:(0|10|11:[0-3])" file.log mais plus simple et compréhensible avec grep, Grinn a proposé egrep '\\[22/Jan/2019:(11:[45][0-9]|1[2-9]|2[0-3]):' file.log.

Ma préférée est celle de Linuz avec awk -v from="[22/Jan/2019:11:40:00" -v to="[22/Jan/2019:23:59:59" '$5>=from && $5<=to' file.log, j’aime aussi beaucoup awk -F'/' 'substr($3,6,2)substr($3,9,2)>=1140 {print}' file.log de unixmipfr.

Merci à tous de votre participation !

Vus : 379
Publié par blog-libre : 133