Grepping des journaux pour des adresses IP
Je suis assez mal à l'aide de "base?" commandes unix et cette question met ma connaissance encore plus à test. Ce que je voudrais faire est de grep toutes les adresses IP à partir d'un journal (p. ex. accès.le log d'apache) et de compter combien de fois ils se produisent. Puis-je le faire avec une seule commande ou dois-je écrire un script pour qui?
- Jetez un oeil à ma réponse dans unix stackexchange: unix.stackexchange.com/a/389565/249079
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin d'un court de pipeline au moins.
Qui permet d'imprimer chaque IP (ne fonctionne qu'avec ipv4 bien), triées préfixé avec le comte.
Je l'ai testé avec apache2 d'accès.journal (c'est configurable, donc vous aurez besoin de vérifier), et il a travaillé pour moi. Il suppose que l'adresse IP est la première chose sur chaque ligne.
Le sed recueille les adresses IP (en fait, il semble pour 4 séries de chiffres, avec des périodes entre les deux), et remplace l'ensemble de la ligne avec elle.
-e t
continue à la ligne suivante si elle a réussi à faire une substitution,-e d
supprime la ligne (si il n'y a pas d'adresse IP sur elle).sort
sortes.. 🙂 Etuniq -c
compte des occurrences consécutives de lignes identiques (qui, depuis, nous avons trié, correspond au nombre total).Aucune des réponses présentées ici ont travaillé pour moi, alors en voici un qui fonctionne:
il utilise grep pour isoler toutes les adresses ip. puis les trie, les compte, et toutes sortes qui entraînent à nouveau.
vous pouvez effectuer les opérations suivantes (où fichier est le nom du fichier journal)
edit: raté la partie sur le décompte adresse, maintenant ajouté
egrep '[[:digit:]]{1,3}(.[[:chiffres:]]{1,3}){3}' |awk '{print $1}'|sort|uniq -c
Voici un script que j'ai écrit il y a plusieurs années. Il grep les adresses de apache journaux d'accès. Je l'ai juste essayé sur Ubuntu 11.10 (oneiric) 3.0.0-32-generic #51-Ubuntu SMP Thu Mar 21 15:51:26 UTC 2013 i686 i686 i386 GNU/Linux
Il fonctionne très bien. Utiliser Gvim ou Vim pour lire le fichier résultant, qui sera appelée à unique_visits, qui liste l'unique ips dans une colonne. La clé, c'est dans les lignes avec grep. Ces expressions de travail pour extraire les numéros d'adresses ip. IPV4 uniquement. Vous pouvez avoir besoin de passer par le navigateur numéros de version. Un autre script que j'ai écrit pour un système Slackware est ici:
http://www.perpetualpc.net/srtd_bkmrk.html
À l'aide de sed:
Vous pouvez rechercher et trouver des regex disponible pour l'adresse ip sur Internet et de le remplacer avec
<regex_for_ip_address>
. par exemple, À partir des réponses à une question sur stackoverflow