existe-t-il un moyen d'utiliser grep pour ignorer les lignes avec 141.8. .. contenues dans eux MAIS obtenir des lignes qui ont GET? En ce moment, j'ai ceci mais je dois faire quelque chose de mal
Sudo grep -v '^141.8.83.213' && "GET" /home/tsec/prototype/logs/glastopf.log | sort -k4,4 | tac | sort -uk4,4 | sort -k1,2 | tail -n 10 > /home/tsec/prototype/logs/ext$
C'est ce que contient le journal
2016-04-20 13:30:59,818 (glastopf.glastopf) 141.8.83.213 requested GET /favicon.ico on e1f841a092e9:80
2016-04-20 13:31:01,817 (glastopf.glastopf) 141.8.83.213 requested POST /index on e1f841a092e9:80
2016-04-20 13:31:01,855 (glastopf.glastopf) 141.8.83.213 requested GET /style.css on e1f841a092e9:80
2016-04-20 13:31:01,883 (glastopf.glastopf) 141.8.83.213 requested GET /favicon.ico on e1f841a092e9:80
2016-04-20 16:39:55,713 (glastopf.glastopf) Initializing Glastopf 3.1.3-dev using "/data/glastopf" as work directory.
2016-04-20 16:39:55,797 (glastopf.glastopf) Connecting to main database with: sqlite:///db/glastopf.db
2016-04-20 16:39:55,834 (glastopf.glastopf) Glastopf started and privileges dropped.
2016-04-20 17:54:33,857 (glastopf.glastopf) 62.210.252.43 requested GET / on de96c7b4104d:80
2016-04-20 17:54:34,101 (glastopf.glastopf) 62.210.252.43 requested GET /HNAP1/ on de96c7b4104d:80
2016-04-20 22:06:20,265 (glastopf.glastopf) Initializing Glastopf 3.1.3-dev using "/data/glastopf" as work directory.
2016-04-20 22:06:20,399 (glastopf.glastopf) Connecting to main database with: sqlite:///db/glastopf.db
2016-04-20 22:06:20,446 (glastopf.glastopf) Glastopf started and privileges dropped.
2016-04-20 22:33:23,136 (glastopf.glastopf) 74.91.23.109 requested GET / on 11bbb1d43c02:80
Donc à la fin, je veux obtenir les entrées qui ont GET dans la chaîne mais ignorer celles qui ont l'IP 141.8.83.213
Utilisez deux grep
s:
_grep "GET" /home/tsec/prototype/logs/glastopf.log | grep -vF 141.8.83.213 | ...
_
De man grep
:
_-F Match using fixed strings. Treat each pattern specified as a
string instead of a regular expression. If an input line
contains any of the patterns as a contiguous sequence of bytes,
the line shall be matched. A null string shall match every line.
-v Select lines not matching any of the specified patterns. If the
-v option is not specified, selected lines shall be those that
match any of the specified patterns.
_
Donc _-F
_ nous permet d’éviter d’échapper à _.
_, qui correspondrait à n’importe quel caractère. _-v
_ est le moyen classique de dire à grep
d’inverser la correspondance.
Awk autorise les opérateurs logiques dans regex, vous pouvez donc dire faire correspondre GET et aussi les lignes qui ne contiennent pas ip
awk '/GET/&&!/141\.8\.83\.213/' log. txt