Les bases de perl

Le
michel.barret
Bonjour,

Je suis pas très doué en perl, mais je suis presque sur de pouvoir
trouver un équivalent à ceci en perl :
/sbin/ifconfig | grep "inet " | grep -v "127.0.0.1" | awk '{ print
$2 }' | awk -F: '{ print $2 }' | awk -F. '{ print $1"."$2"."$3"." }'

En effet mis à par l'execution de la commande ifconfig, perl est
réputé pour pouvoir faire des awk et des grep de lui même en plus
puissant mais je ne sais pas trop comment faire.

Pouvez-vous me donner des piste ?
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrice Karatchentzeff
Le #18538961
a écrit :

Je suis pas très doué en perl, mais je suis presque sur de pouvoir
trouver un équivalent à ceci en perl :
/sbin/ifconfig | grep "inet " | grep -v "127.0.0.1" | awk '{ print
$2 }' | awk -F: '{ print $2 }' | awk -F. '{ print $1"."$2"."$3"." }'



Je ne sais pas si c'est volontaire mais cela charcute la dernière
partie de l'adresse IP ?

En effet mis à par l'execution de la commande ifconfig, perl est
réputé pour pouvoir faire des awk et des grep de lui même en plus
puissant mais je ne sais pas trop comment faire.

Pouvez-vous me donner des piste ?



Avec toute l'adresse :

$ ifconfig | perl -ane 'if (/adr :/) {$F[1]=~ s/adr ://g ; print $F[1],
"n"}'

en perl 5.10

$ ifconfig | perl -anE 'if (/adr :/) {$F[1]=~ s/adr ://g ; say $F[1]}'

PK


--
      |      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:
     |,4-  ) )-,_. , (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'_)       
Patrice Karatchentzeff
Le #18539011
Patrice Karatchentzeff
[...]

Avec toute l'adresse :

$ ifconfig | perl -ane 'if (/adr :/) {$F[1]=~ s/adr ://g ; print $F[1],
"n"}'

en perl 5.10

$ ifconfig | perl -anE 'if (/adr :/) {$F[1]=~ s/adr ://g ; say $F[1]}'



arrgh... mon typographeur automatique me joue toujours des tours dans
les copier-coller : il y a un espace de trop dans la substitution :

s/addr:/

ifconfig | perl -anE 'if (/adr:/) {$F[1]=~ s/adr://g ; say $F[1]}'

(surtout qu'il s'agit en plus de l'espace insécable :))

PK

--
      |      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:
     |,4-  ) )-,_. , (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'_)       
michel.barret
Le #18542011
On 31 jan, 09:39, Patrice Karatchentzeff wrote:
Patrice Karatchentzeff
[...]

> Avec toute l'adresse :

> $ ifconfig | perl -ane 'if (/adr :/) {$F[1]=~ s/adr ://g ; prin t $F[1],
> "n"}'

> en perl 5.10

> $ ifconfig | perl -anE 'if (/adr :/) {$F[1]=~ s/adr ://g ; say $F[1]}'

arrgh... mon typographeur automatique me joue toujours des tours dans
les copier-coller : il y a un espace de trop dans la substitution :

s/addr:/

ifconfig | perl -anE 'if (/adr:/) {$F[1]=~ s/adr://g ; say $F[1]}'

(surtout qu'il s'agit en plus de l'espace insécable :))

PK

--
      |      _,,,---,,_       Patr ice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:p.karatchentz..
     |,4-  ) )-,_. , (  `'-'  http://p.karat chentzeff.free.fr
    '---''(_/--'  `-'_)       



Oui c'est un fait exprès la dernière partie seras une variable.

J'ai modifié ton uniligne pour qu'il retire le loopback et le dernier
octet de l'adresse IP
ifconfig | perl -anE 'if (/adr:/) {$F[1]=~ s/adr:(d*.d*.d*.)d*/
$1/g ; say grep {!/^127/} $F[1]}'
Maintenant je cherche à envoyer ça dans une variable :)
Patrice Karatchentzeff
Le #18542341
a écrit :

J'ai modifié ton uniligne pour qu'il retire le loopback et le dernier
octet de l'adresse IP
ifconfig | perl -anE 'if (/adr:/) {$F[1]=~ s/adr:(d*.d*.d*.)d*/
$1/g ; say grep {!/^127/} $F[1]}'
Maintenant je cherche à envoyer ça dans une variable :)



Comment cela ?

Après, l'intérêt de l'uniligne s'estompe largement au profit d'un vrai
script...

PK

--
      |      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:
     |,4-  ) )-,_. , (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'_)       
michel.barret
Le #18543161
On 31 jan, 16:01, Patrice Karatchentzeff wrote:
a écrit :

> J'ai modifié ton uniligne pour qu'il retire le loopback et le dernier
> octet de l'adresse IP
> ifconfig | perl -anE 'if (/adr:/) {$F[1]=~ s/adr:(d*.d*.d*.)d* /
> $1/g ; say grep {!/^127/} $F[1]}'
> Maintenant je cherche à envoyer ça dans une variable :)

Comment cela ?

Après, l'intérêt de l'uniligne s'estompe largement au profit d'un v rai
script...

PK

--
      |      _,,,---,,_       Patr ice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:p.karatchentz..
     |,4-  ) )-,_. , (  `'-'  http://p.karat chentzeff.free.fr
    '---''(_/--'  `-'_)       



Je cherche pas à faire un uniligne à la base.

En fait mon idée c'est de pinguer toutes les adresses IP d'un réseau
local pour trouver une machine.
Pour ça j'incrémente le dernier octet au fure et à mesure parce que j e
crois que certains routeur bloque le broadcast.

Je cherche à détecter automatiquement l'adresse du réseau à fin d' être
plus portable. et c'est ce que je tente de faire en récupérant la
sortie d'ipconfig.
Patrice Karatchentzeff
Le #18543581
a écrit :

En fait mon idée c'est de pinguer toutes les adresses IP d'un réseau
local pour trouver une machine. Pour ça j'incrémente le dernier
octet au fure et à mesure parce que je crois que certains routeur
bloque le broadcast.



Pourquoi pas...

Je cherche à détecter automatiquement l'adresse du réseau à fin
d'être plus portable. et c'est ce que je tente de faire en
récupérant la sortie d'ipconfig.



Autant utiliser les modules ad hoc plutôt que réinventer la roue...
avec un peu de chance, on peut simuler du broadcast et le problème est
résolu :)

PK

--
      |      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:
     |,4-  ) )-,_. , (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'_)       
Patrice Karatchentzeff
Le #18543711
Patrice Karatchentzeff
a écrit :



[...]

> Je cherche à détecter automatiquement l'adresse du réseau à fin
> d'être plus portable. et c'est ce que je tente de faire en
> récupérant la sortie d'ipconfig.

Autant utiliser les modules ad hoc plutôt que réinventer la roue...
avec un peu de chance, on peut simuler du broadcast et le problème
est résolu :)



J'ai cherché un peu et j'ai trouvé le module Patricia (paquet
libnet-patricia-perl). Cumulé avec libnet-ifconfig-wrapper-perl, ça
doit le faire.

Je n'ai pas testé.

PK

--
      |      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:
     |,4-  ) )-,_. , (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'_)       
Paul Gaborit
Le #18545291
À (at) Sat, 31 Jan 2009 08:18:35 -0800 (PST),
écrivait (wrote):
En fait mon idée c'est de pinguer toutes les adresses IP d'un réseau
local pour trouver une machine.



Il existe un module bien pratique pour ça : Net::Ping.

--
Paul Gaborit - Perl en français -
Publicité
Poster une réponse
Anonyme