#1 Le 26/07/2011, à 10:21
- Bybeu
[super résolu] Problème avec grep et or
Bonjour tous
J'ai un souci avec grep : je dois détecter par un script si le routeur a bien choppé une ip privée par son serveur dhcp avant de mettre en place par des filtres ebtables basés en partie sur cette adresse.
L'adresse ip obtenue (ou pas) par le routeur est dans un fichier qui est mis à jour par un service client dhcp.
Je compte faire une commande "until adresse ip ok do sleep 3 done"
J'essaye ça en ligne de commande avant de l'intégrer dans le script mais je tourne en rond depuis quelques jours:
conf actuelle:
grep 'u_ip="192.' /etc/udhcpc/info.br0
u_ip="192.168.22.245"
echo $?
0
cool
mais
grep 'u_ip="10.'\|'u_ip="172.'\|'u_ip="192.' /etc/udhcpc/info.br0
echo $?
1
ou
grep -e 'u_ip="10.'\|'u_ip="172.'\|'u_ip="192.' -f /etc/udhcpc/info.br0
pas de retour, alors Ctrl+C
echo $?
130
ou encore
grep "u_ip=\"10."|"u_ip=\"172."|"u_ip=\"192." /etc/udhcpc/info.br0
-sh: u_ip="172.: not found
-sh: u_ip="192.: not found
pas de retour, alors Ctrl+C
echo $?
127
Je nage comme une bille.
Dernière modification par Bybeu (Le 26/07/2011, à 12:35)
En ligne
#2 Le 26/07/2011, à 10:31
- Pacifick_FR42
Re : [super résolu] Problème avec grep et or
Si le but est juste de savoir qui est connecté sur ton serveur DHCP tu peux :
nmap -sP 192.168.0.*
Hors ligne
#3 Le 26/07/2011, à 10:43
- Bybeu
Re : [super résolu] Problème avec grep et or
Non, le but est de savoir si le client lui-même, configuré comme client dhcp, a bien obtenu sa conf depuis le serveur, avant que le client lui-même ne s'applique à lui-même les filtres ipfilters (c'est pour le rendre autonome du serveur pour ses règles ebtables). Merci quand-même, j'ai essayé ta commande sur le routeur pour voir si elle pouvait m'aider, mais elle n'est pas dispo. De toute façon, il aurait fallu que je teste si elle renvoyait 10. 172. ou 192. et en plus ça n'aurait pas gazé car le routeur dispose d'un mécanisme de fallback en cas d'échec dhcp qui le renvoie sur une ip configurable statique, mais qui devrait rester privée. Je dois vraiment lire ce fichier info.br0
En ligne
#4 Le 26/07/2011, à 11:11
- Bybeu
Re : [super résolu] Problème avec grep et or
En fait je crois que mon problème c'est que je sais même pas faire un OU à deux options, alors à trois, t'imagines !
En ligne
#5 Le 26/07/2011, à 11:39
- Bybeu
Re : [super résolu] Problème avec grep et or
egrep 'u_ip="10.|u_ip="192.|u_ip="172.' /etc/udhcpc/info.br0
u_ip="192.168.22.245"
echo $?
0
En ligne
#6 Le 26/07/2011, à 11:40
- johndo
Re : [super résolu] Problème avec grep et or
essaie ça :
egrep 'u_ip="(10\.|1[79]2\.)' /etc/udhcpc/info.br0
Hors ligne
#7 Le 26/07/2011, à 11:42
- Bybeu
Re : [super résolu] Problème avec grep et or
Merci, c'est plus joli !
En ligne
#8 Le 26/07/2011, à 12:34
- Bybeu
Re : [super résolu] Problème avec grep et or
Merci, johndo c'est plus joli !
Soyons fous
Et ça, ça marcherait ?
egrep 'u_ip="1(0\.|[79]2\.)' /etc/udhcpc/info.br0
et ça ?
egrep 'u_ip="1(0|[79]2)\.' /etc/udhcpc/info.br0
voyons...
ENAURME !!!
until [ `egrep 'u_ip="1(0|[79]2)\.' ifile` ]; do
echo Pas glop
sleep 30
done
echo Glop
j'ai du rajouter des apostrophes inversées autour de toute la commande egrep, sinon j'avais des erreurs
sh: u_ip="1(0|[79]2)\.: unknown operand
Merci encore, ça va même me simplifier le script : même plus besoin de tester l'existence préalable du fichier
En ligne
#9 Le 26/07/2011, à 13:45
- johndo
Re : [super résolu] Problème avec grep et or
j'ai du rajouter des apostrophes inversées autour de toute la commande egrep, sinon j'avais des erreurs
ça s'appelle des backquotes et c'est déprécié. la forme $(..) est préférée
sinon :
until egrep -q 'u_ip="1(0|[79]2)\.' ifile &>/dev/null
do
echo Pas glop
sleep 30
done
echo Glop
Dernière modification par johndo (Le 26/07/2011, à 14:46)
Hors ligne
#10 Le 26/07/2011, à 16:29
- FRUiT
Re : [super résolu] Problème avec grep et or
Les backquotes ne sont pas dépréciées mais juste plus anciennes (et moins confortables).
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#11 Le 26/07/2011, à 17:28
- Bybeu
Re : [super résolu] Problème avec grep et or
ça s'appelle des backquotes et c'est déprécié. la forme $(..) est préférée
Oui, je sais, mais ça respecte mieux le français et ça reflétait mieux mon niveau. En plus ça écorche un poil la gueule à prononcer ... j'espère qu'un fumeux des ministères ne nous couve pas un "bacottes".
sinon :
until egrep -q 'u_ip="1(0|[79]2)\.' ifile &>/dev/null do echo Pas glop sleep 30 done echo Glop
Avec &>/dev/null à la fin, ça retourne toujours 0. Ça à l'air de marcher sans le "&" et même sans rien.
J'ai aussi essayé avec grep -qE pour voir et ça marche aussi... j'y comprends pas grand chose, on trouve des infos contradictoires un peu partout, style egrep=grep -E et ailleurs que le tube "|" doit être échappé dans egrep mais pas dans grep.... avec un exemple à l'envers... grrrrr ... ou alors c'est des histoires de version.
Et avec $(..), ça donnerait quoi dans le script?
En ligne