Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/03/2013, à 11:29

Lomic

Résultat d'un cat|grep|awk|sort utilisé par whois

J'adore le terminal, bon parfois j'ai des trous de mémoire et je ne sais plus comment faire certaines choses...

Dans mon cas présent, je veux faire un "whois" sur chaque ligne sortie par une commande plus longue:

cat monsite.fr-12-03-2013.log | grep qqch | awk -F " " '{print $1}' | sort -u

Qui me sort une liste d'IP qui font "qqch" dans mes logs serveur.

Je voudrais passer un coup de "whois" derrière (que je greperai pour sortir par exemple que le "netname")

Mais ajouter "| whois | grep netname" derrière ne donne rien.

Qu'est-ce que je loupe?

Merci smile

Hors ligne

#2 Le 14/03/2013, à 12:29

Yannou90

Re : Résultat d'un cat|grep|awk|sort utilisé par whois

Bonjours

Quelque chose comme çà peut-être :

grep "qqchose" monsite.fr-12-03-2013.log | cut -d" " -f1 | sort -u | xargs whois

Pas testé ...

Dernière modification par Yannou90 (Le 14/03/2013, à 12:29)

Hors ligne

#3 Le 14/03/2013, à 12:34

credenhill

Re : Résultat d'un cat|grep|awk|sort utilisé par whois

hello
cat, grep et -F " " sont inutiles.
essayer

whois $(awk '/qqch/ {print $1}' monsite.fr-12-03-2013.log  | sort -u)

Hors ligne

#4 Le 14/03/2013, à 12:36

Lomic

Re : Résultat d'un cat|grep|awk|sort utilisé par whois

Merci Yannou90 mais "xargs whois" ne fonctionne pas, ni avec ta commande, ni avec la mienne wink

Il me répond "Aucun serveur whois n'est connu pour ce type d'objet."

@credenhill : merci mais j'obtiens le même message d'erreur qu'avec la commande Yannou et la mienne.

Dernière modification par Lomic (Le 14/03/2013, à 12:38)

Hors ligne

#5 Le 14/03/2013, à 13:33

credenhill

Re : Résultat d'un cat|grep|awk|sort utilisé par whois

effectvment, whois n'accepte qu'un seul  nom
essayer

awk '/qqch/ {print $1}' monsite.fr-12-03-2013.log  | sort -u | xargs -I{} whois {} 

Dernière modification par credenhill (Le 14/03/2013, à 13:34)

Hors ligne

#6 Le 14/03/2013, à 13:36

Lomic

Re : Résultat d'un cat|grep|awk|sort utilisé par whois

ça marche parfaitement!

merci credenhill

peux-tu résumer le fonctionnement de cette partie : xargs -I{} whois {}

Hors ligne

#7 Le 14/03/2013, à 13:45

Lomic

Re : Résultat d'un cat|grep|awk|sort utilisé par whois

en poussant le bouchon un peu plus loin, je souhaite récupérer les lignes 12, 13 et 14 de chaque whois généré

sur un whois seul avec une IP je fais

whois 192.168.0.1 | head -n 14 | tail -n 3

mais là ça ne fonctionne pas, il doit faire le head/tail sur l'ensemble de la sortie et non chaque whois

Hors ligne

#8 Le 14/03/2013, à 13:58

credenhill

Re : Résultat d'un cat|grep|awk|sort utilisé par whois

essayer

awk '/qqch/ {print $1}' monsite.fr-12-03-2013.log | sort -u |  xargs -I{} bash -c "whois {} | awk 'NR>11 && NR<15'" |   

xargs -I{} bash -c "whois {} | : xargs remplace {} par le nom qui vient du pipe et exécute whois [nom], 1 nom par commande
j'uilise awk pour garder les lignes 12-14, mais tu peux utiliser head et tail

Hors ligne

#9 Le 14/03/2013, à 14:04

Lomic

Re : Résultat d'un cat|grep|awk|sort utilisé par whois

nickel, je te remercie wink

Hors ligne

#10 Le 15/03/2013, à 02:05

nesthib

Re : Résultat d'un cat|grep|awk|sort utilisé par whois

Quelques suggestions.
Au lieu de faire awk + sort, il est possible d'obtenir une sortie unique en une seule fois :

awk '/qqch/{if(!_[$1]++){print $1}}' log | …

Il est possible de définir le nombre maximum d'arguments pour xargs (par défaut il essaie de lancer la commande avec des arguments multiples) :

… | xargs -n1 whois

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#11 Le 15/03/2013, à 09:30

Lomic

Re : Résultat d'un cat|grep|awk|sort utilisé par whois

merci pour les tuyaux nesthib smile

pour ce qui est de ma façon de faire, en fait, je pars généralement d'une commande simple, et je pipe au fur et à mesure avec d'autres commandes pour écrémer mon résultat, d'où cette façon peu orthodoxe smile

Hors ligne

#12 Le 15/03/2013, à 23:33

nesthib

Re : Résultat d'un cat|grep|awk|sort utilisé par whois

À vrai dire le pipe correspond tout à fait à la philosophie UNIX, une chose à la fois, bien faite. On enchaîne donc plein de « petites » commandes pour faire son programme. La limite est que si tu travailles avec des gros fichiers tu perds en efficacité. Un autre facteur est que la plupart des gens ont une vision restreinte du rôle de chaque commande, grep → filtrer une ligne, sed → changer un mot, awk/cut → afficher une colonne, head/tail → limiter au début à la fin d'un fichier… alors qu'en réalité la plupart des commandes sont plus puissantes qu'on ne le croit (par exemple awk et sed font tout ce que j'ai décrit… et bien plus…) smile


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne