Calcul adresse reseau perl
Résolu/Fermé
kd54
Messages postés
6
Date d'inscription
mardi 31 mars 2009
Statut
Membre
Dernière intervention
6 mai 2009
-
24 avril 2009 à 10:16
kd54 Messages postés 6 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 6 mai 2009 - 27 avril 2009 à 10:03
kd54 Messages postés 6 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 6 mai 2009 - 27 avril 2009 à 10:03
A voir également:
- Calcul adresse reseau perl
- Nom de l'adresse ✓ - Forum Internet / Réseaux sociaux
- Creer adresse mail - Guide
- Tirexo nouvelle adresse - Guide
- Localiser adresse ip - Guide
- Adresse mac - Guide
9 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
24 avril 2009 à 10:38
24 avril 2009 à 10:38
Salut,
Je n'ai pas testé.
Je n'ai pas testé.
my $ip=.....; my $m=....; my ($x1,$x2,$x3,$x4)=split /\./,$ip; my ($m1,$m2,$m3,$m4) = split /\./,$m; my $reseau=$x1 & $m1 . "." . $x2 & $m2 . "." . $x3 & $m3 . "." . $x4 & $m4;autre version
my $ip=.....; my $m=....; my @ip=split /\./,$ip; my @masque = split /\./,$m; push @reseau,$ip[$_] & $mask[$_] for 1..4; my $reseau=join ".",@reseau;
kd54
Messages postés
6
Date d'inscription
mardi 31 mars 2009
Statut
Membre
Dernière intervention
6 mai 2009
24 avril 2009 à 11:24
24 avril 2009 à 11:24
Je te remercie. La premiere partie fonctionne bien.
Par contre, il y a un probleme avec le ET logique. Ca ne fonctionne pas.
Si $x1 = 192 et $m1 = 255, l'operation $x1 & $m1 me renvoie 010
Comment fait-on un "ET Logique" en perl ??
Par contre, il y a un probleme avec le ET logique. Ca ne fonctionne pas.
Si $x1 = 192 et $m1 = 255, l'operation $x1 & $m1 me renvoie 010
Comment fait-on un "ET Logique" en perl ??
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
24 avril 2009 à 11:40
24 avril 2009 à 11:40
Re,
Essaie &&
Essaie &&
kd54
Messages postés
6
Date d'inscription
mardi 31 mars 2009
Statut
Membre
Dernière intervention
6 mai 2009
24 avril 2009 à 11:47
24 avril 2009 à 11:47
non plus. J'avais deja essaye... Ca retourne soit 192 pour $x1 && $m1 soit 255 pour $m1 && $x1.
C'est bizar avec un seul & ca devrait fonctionne...
C'est bizar avec un seul & ca devrait fonctionne...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
24 avril 2009 à 12:07
24 avril 2009 à 12:07
Re,
Affiche plutôt le script ainsi que l'exécution
N'oublie pas de mettre use strict;use warnings; pour avoir les messages d'erreur/avertissement
Affiche plutôt le script ainsi que l'exécution
N'oublie pas de mettre use strict;use warnings; pour avoir les messages d'erreur/avertissement
Comment fait-on un "ET Logique" en perl ??
Non, c'est un opérateur 'bit à bit' que tu recherches.
Et il s'agit bien de &.
192 & 255 donne 192
193 & 254 donne 192.
Si ce n'est pas le cas, tu dois faire une erreur quelque part.
Non, c'est un opérateur 'bit à bit' que tu recherches.
Et il s'agit bien de &.
192 & 255 donne 192
193 & 254 donne 192.
Si ce n'est pas le cas, tu dois faire une erreur quelque part.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
24 avril 2009 à 12:17
24 avril 2009 à 12:17
Re,
De toute façon c'est l'opérateur bit à bit qui doit être utiliser, je pense aussi pour une erreur de syntaxe quelque part.
Comme je ne peux pas tester, il sera mieux qu'on vois le script.
De toute façon c'est l'opérateur bit à bit qui doit être utiliser, je pense aussi pour une erreur de syntaxe quelque part.
Comme je ne peux pas tester, il sera mieux qu'on vois le script.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
24 avril 2009 à 19:28
24 avril 2009 à 19:28
Re,
Ok, j'ai compris pourquoi ça ne marche pas.
Les octets des adresses sont pris pour des chaînes de caractères.
Exemple
Puisque le point est l'opérateur de concaténation.
Ce qui fait que 192.168.1.47 deviens une chaine de caractère et l'opérateur & donnera un résultat inattendu.Il suffit de forcer la conversion (j'ai utilise une addition avec zéro).
Vu le contexte 0+192 sera le nombre 192 et pas la chaîne "192".
Bref 0+192 ou 0+"192" donnera toujours un nombre tandis que 0.192 ou 0 . "192" c'est une chaine
Voir en gras.
Ok, j'ai compris pourquoi ça ne marche pas.
Les octets des adresses sont pris pour des chaînes de caractères.
Exemple
lami20j@debian:~/trash/ccm_perl$ perl -e 'print "192" & "255","\n"' 010 lami20j@debian:~/trash/ccm_perl$ perl -e 'print 192 & 255,"\n"' 192Pourquoi?
Puisque le point est l'opérateur de concaténation.
Ce qui fait que 192.168.1.47 deviens une chaine de caractère et l'opérateur & donnera un résultat inattendu.Il suffit de forcer la conversion (j'ai utilise une addition avec zéro).
Vu le contexte 0+192 sera le nombre 192 et pas la chaîne "192".
Bref 0+192 ou 0+"192" donnera toujours un nombre tandis que 0.192 ou 0 . "192" c'est une chaine
Voir en gras.
#!/usr/bin/perl use strict;use warnings; my @reseau; my $ip="192.168.1.47"; my $m="255.255.255.0"; my @ip=split /\./,$ip; my @masque = split /\./,$m; push @reseau,0+$ip[$_] & $masque[$_] for 0 .. 3; my $reseau=join ".",@reseau; print "réseau $reseau\n"; __END__ lami20j@debian:~/trash/ccm_perl$ perl ccm_address_reseau.pl réseau 192.168.1.0
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
>
loupius
24 avril 2009 à 22:14
24 avril 2009 à 22:14
Salut,
Merci.
Bonne soirée ;-)
Merci.
Bonne soirée ;-)
kd54
Messages postés
6
Date d'inscription
mardi 31 mars 2009
Statut
Membre
Dernière intervention
6 mai 2009
27 avril 2009 à 10:03
27 avril 2009 à 10:03
Merci beaucoup a tous les deux !!
Desole de ne reapparaitre que maintenant mais je n'avais plus d'acces au net.
Encore merci pour votre aide.
salut
Desole de ne reapparaitre que maintenant mais je n'avais plus d'acces au net.
Encore merci pour votre aide.
salut