OVH Cloud OVH Cloud

grep immense

17 réponses
Avatar
Rakotomandimby (R12y) Mihamina
Bonjour,

J'ai un serveur qui a du changer d'IP.

Je dois donc me taper tous les fichiers de configuration des serveurs
logiciels (MTA, Apache, tout...)


Pour avoir une idée de la masse de travail qui m'attend, je voudrai faire
un 'grep $OLD_IP /**/*' et ainsi savoir combien de fichiers contiennent
l'ancienne IP et ainsi commencer l'assignation des priorités d'édition.

Comme mentionné plus haut, le grep il va crier parceque trop d'arguments.
En effet je lui donne à manger tout le filesystem. Comment arranger un
peu ça? Avec un for bien senti du genre

for FICHIER in /**/* ; do
if ((le fichier contient $OLD_IP)) then
print $FICHIER
done

Comment faire bref pour la chose entre "(( ))" ?

J'utilise zsh.

Merci d'avance.

--
Miroir de logiciels libres http://www.etud-orleans.fr
Développement de logiciels libres http://aspo.rktmb.org/activites/developpement
Infogerance de serveur dédié http://aspo.rktmb.org/activites/infogerance
(En louant les services de l'ASPO vous luttez contre la fracture numerique)

10 réponses

1 2
Avatar
Manu
Rakotomandimby (R12y) Mihamina wrote:
Pour avoir une idée de la masse de travail qui m'attend, je voudrai faire
un 'grep $OLD_IP /**/*' et ainsi savoir combien de fichiers contiennent
l'ancienne IP et ainsi commencer l'assignation des priorités d'édition.

Comme mentionné plus haut, le grep il va crier parceque trop d'arguments.
En effet je lui donne à manger tout le filesystem. Comment arranger un
peu ça? Avec un for bien senti du genre


rgrep
ou
grep -r
ou (plus standard)
find / -type f -exec grep -H $IP {} ;

Avatar
Jacques L'helgoualc'h
Le 09-06-2005, Manu a écrit :
Rakotomandimby (R12y) Mihamina wrote:
Pour avoir une idée de la masse de travail qui m'attend, je voudrai faire
un 'grep $OLD_IP /**/*' et ainsi savoir combien de fichiers contiennent
l'ancienne IP et ainsi commencer l'assignation des priorités d'édition.
[...]


rgrep
ou
grep -r
ou (plus standard)
find / -type f -exec grep -H $IP {} ;


va lancer un grep par fichier ...


grep -m1 -rwl -F "$OLD_IP" /etc (et les autres répertoires utiles)

(Gnu grep 2.5)

Ça m'étonnerait qu'il y ait quelque chose d'intéressant à grepper dans
/usr/share/doc, /dev ou /proc ?

--
Jacques L'helgoualc'h


Avatar
Stephane Dupille
find / -type f -exec grep -H $IP {} ;


Non, car le grep ne donnera pas le nom du fichier qu'il a greppé.

Il vaut mieux faire :
find / -type f -print | xargs grep -H $IP

--
OM> Je viens d'être inscrit contre mon gré sur une liste hébergée
OM> par listbot (sexyliens).
Je l'ai reçu aussi, et je me suis fait engueuler par ma femme !!!
-+-CV in <http://www.le-gnu.net> : Les (sexy)liens du mariage -+-

Avatar
Laurent Wacrenier
Rakotomandimby (R12y) Mihamina écrit:
Bonjour,

J'ai un serveur qui a du changer d'IP.

Je dois donc me taper tous les fichiers de configuration des serveurs
logiciels (MTA, Apache, tout...)



find / -type f -print | xargs grep -Flw ${IP}

Avatar
Rakotomandimby (R12y) Mihamina
( Thu, 09 Jun 2005 08:47:22 +0000 ) Jacques L'helgoualc'h :

Ça m'étonnerait qu'il y ait quelque chose d'intéressant à grepper
dans /usr/share/doc, /dev ou /proc ?


Effectivement. En fait le grep en une ligne était destiné à etre pipé
par un autre '| grep etc'.

Le but ayant été le racourcissement de la syntaxe. Le serveur écoutant
encore sur ses anciennes IP n'est pas en production donc je pouvais manger
des ressources sans souci. :-)

Merci pour vos suggestions.

--
Miroir de logiciels libres http://www.etud-orleans.fr
Développement de logiciels libres http://aspo.rktmb.org/activites/developpement
Infogerance de serveur dédié http://aspo.rktmb.org/activites/infogerance
(En louant les services de l'ASPO vous luttez contre la fracture numerique)

Avatar
Manu
Stephane Dupille wrote:

find / -type f -exec grep -H $IP {} ;


Non, car le grep ne donnera pas le nom du fichier qu'il a greppé.

Il vaut mieux faire :
find / -type f -print | xargs grep -H $IP


OK (enfin ça marche sur Linux)
$ find / -type f -print -exec grep -H $IP {} ;


Avatar
Stephane Dupille
OK (enfin ça marche sur Linux)
$ find / -type f -print -exec grep -H $IP {} ;


Cette version affiche aussi le nom du fichier, mais encore une fois,
il vaut mieux utiliser xargs, car cela permet est nettement plus
économe (quelques process (au mieux 2, mais certainement plus) au
lieux d'un process par fichier plus celui pour le find).

Cette version marche peut-être, mais elle n'est pas la plus
optimale.

--
Franchement, depuis control.cancel c'est le thème pour lequel le besoin
d'un forum est le plus évident.
-+- SP in www.le-gnu.net - Spécial dédicace -+-

Avatar
SauronDeMordor

find / -type f -exec grep -H $IP {} ;



Non, car le grep ne donnera pas le nom du fichier qu'il a greppé.



si sur architecture gnu, ou si gnu grep alors le grep -rl serait parfait

r (gnu) pour recursif et l pour ne montrer que les fichier ayant au moins 1
occurance

Il vaut mieux faire :
find / -type f -print | xargs grep -H $IP




Avatar
Thomas
In article (Dans l'article)
,
"Rakotomandimby (R12y) Mihamina"
wrote (écrivait) :

Bonjour,

J'ai un serveur qui a du changer d'IP.

Je dois donc me taper tous les fichiers de configuration des serveurs
logiciels (MTA, Apache, tout...)


par curiosité, pourquoi il y a l'ip du serveur lui meme dans les
fichiers de config ?
il n'est pas fait pour pouvoir repondre de la meme maniere quelle que
soit l'ip qui lui est attribuée ?

--
http://tDeContes.hd.free.fr/
http://palestine-hn.org/

"don't put your PC out of the window, put windows out of your PC"
"petit Free qui devient grand, gêne les requins blancs"

Avatar
Manu
Stephane Dupille wrote:
Cette version affiche aussi le nom du fichier, mais encore une fois,
il vaut mieux utiliser xargs, car cela permet est nettement plus
économe (quelques process (au mieux 2, mais certainement plus) au
lieux d'un process par fichier plus celui pour le find).

Cette version marche peut-être, mais elle n'est pas la plus
optimale.


Je connaissais xargs mais je pensais xargs lançait la commande pour
chaque argument. Une vérification avec strace confirme ça.
Je me demandais comment xargs faisait ce miracle et je suppose qu'il
lance N fois la commande en argument, avec N = <longueur totale des
arguments> modulo <longueur maxi de la ligne de commande>.

Je m'endormirais moins bête ce soir.

1 2