Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Nouveau Candidat au Club
    [Net::DHCP::Packets]: Afficher suboption option_82 paquets DHCP
    Bonjour,

    Je suis en train d'écrire un script qui permet de récupérer les infos d'un paquet DHCP en PERL.

    J'arrive à récupérer les infos des options telles que DHO_DHCP_MESSAGE_TYPE mais impossible de récupérer les sub option telle que RA_REMOTE_ID ou RA_CIRCUIT_ID de l'option_82 (DHO_DHCP_AGENT_OPTIONS()).


    Pour ce faire, j'utilise les module Perl NET:HCP:ackets.pm et NET:HCP::Constants, plus particulièrement la fonction getSubOptionRaw.

    Voici le script:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #!/usr/bin/perl
    use IO::Socket::INET;
    use Net:<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />HCP:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />acket;
    #use Net:<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />HCP::Constants qw(<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />EFAULT %REV_DHCP_MESSAGE);
    use Net:<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />HCP::Constants qw(<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />EFAULT %RELAYAGENT_CODES %REV_DHCP_MESSAGE);
    #use Data:<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />umper;
     
    $sock = IO::Socket::INET->new(LocalPort => 67, Proto => "udp", Broadcast => 1)
    or die "socket: $@";
     
    while ($sock->recv($newmsg, 4096)) {
    $packet = Net:<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />HCP:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />acket->new($newmsg);
    $agent = $packet->getSubOptionRaw(DHO_DHCP_AGENT_OPTIONS(), RA_REMOTE_ID);
    print STDERR $packet->toString();
    print "\n\n";
    print STDERR $agent;
    print "\n\n";
    }




    Résultat:
    Can't use string ("çâÖVPRN1111ddd3a0"...) as a HASH ref while "strict refs" in use at /usr/local/lib/perl5/site_perl/5.16/Net/DHCP/Packet.pm line 555.

    Line 555: /usr/local/lib/perl5/site_perl/5.16/Net/DHCP/Packet.pm
    sub getSubOptionRaw {
    my ( $self, $key, $subkey ) = @_;
    return $self->{options}->{$key}->{$subkey}
    if exists( $self->{options}->{$key}->{$subkey} );
    return;
    }

    Voici ce que je voudrais afficher:

    RA_REMOTE_ID: $ra_remote_id
    RA_SUBSCRIBER_ID: $ra_subscriber_id

    Comment puis-je faire pour afficher les suboption de l'option 82 ?

    Merci d'avance.

  2. #2
    Expert confirmé
    As-tu essayé d'afficher le code DHO_DHCP_AGENT_OPTIONS() juste avant l'appel à getSubOptionRaw ?
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    print "agent_options_code = ", DHO_DHCP_AGENT_OPTIONS(), ", self->{agent_options_code} is hash ? ", ref($self->{DHO_DHCP_AGENT_OPTIONS()} eq "HASH" ? "yes":"no"), "\n"


    Autre piste : charger toutes les constantes
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    use Net:<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />HCP::Constants;
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say