Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Les bases de perl

8 réponses
Avatar
michel.barret
Bonjour,

Je suis pas tr=E8s dou=E9 en perl, mais je suis presque sur de pouvoir
trouver un =E9quivalent =E0 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 =E0 par l'execution de la commande ifconfig, perl est
r=E9put=E9 pour pouvoir faire des awk et des grep de lui m=EAme en plus
puissant mais je ne sais pas trop comment faire.

Pouvez-vous me donner des piste ?

8 réponses

Avatar
Patrice Karatchentzeff
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
    '---''(_/--'  `-'_)       
Avatar
Patrice Karatchentzeff
Patrice Karatchentzeff a écrit :

[...]

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
    '---''(_/--'  `-'_)       
Avatar
michel.barret
On 31 jan, 09:39, Patrice Karatchentzeff
wrote:
Patrice Karatchentzeff a écrit :

[...]

> 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 :)
Avatar
Patrice Karatchentzeff
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
    '---''(_/--'  `-'_)       
Avatar
michel.barret
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.
Avatar
Patrice Karatchentzeff
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
    '---''(_/--'  `-'_)       
Avatar
Patrice Karatchentzeff
Patrice Karatchentzeff a écrit :

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
    '---''(_/--'  `-'_)       
Avatar
Paul Gaborit
À (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 - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>