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::DHCP::Packets.pm et NET::DHCP::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::DHCP::Packet; #use Net::DHCP::Constants qw(:DEFAULT %REV_DHCP_MESSAGE); use Net::DHCP::Constants qw(:DEFAULT %RELAYAGENT_CODES %REV_DHCP_MESSAGE); #use Data::Dumper; $sock = IO::Socket::INET->new(LocalPort => 67, Proto => "udp", Broadcast => 1) or die "socket: $@"; while ($sock->recv($newmsg, 4096)) { $packet = Net::DHCP::Packet->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.
Partager