Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^5: Net::Libdnet 0.01 does not work under Window 7

by VinsWorldcom (Prior)
on Jan 17, 2016 at 14:13 UTC ( [id://1152975]=note: print w/replies, xml ) Need Help??


in reply to Re^4: Net::Libdnet 0.01 does not work under Window 7
in thread Net::Libdnet 0.01 does not work under Window 7

You may have to consider - as I did - *not* repairing Net::Libdnet; rather, rewriting some of your scripts to accommodate. Perhaps not ideal, but better than pushing water uphill. Since I'm not an expert coder and my efforts to get Net::Libdnet working didn't work - it was my only option.

Win32::Interfaces is in the PPC distribution on GitHub. It wasn't written as a replacement for Net::Libdnet, it was because Net::Libdnet, IO::Interfaces, etc. don't compile / work on Windows. So I took a lot of "functionality" from those modules and emulated it in the accessors for Win32::Interfaces pulling information from 'wmic', 'netsh' and other Windows system commands. It's not elegant, but it works.

Win32::Interfaces is pure Perl and can be installed "manually" by dropping the Interfaces.pm in your (...)/lib/Win32 folder. It has complete perldoc to get you started.

NAME Win32::Interfaces - Win32 Network Adapter Interfaces SYNOPSIS use Win32::Interfaces; my $interface = Win32::Interfaces->new('Wireless Network Connect +ion'); printf "Name: %s\n", $interface->name; printf "MAC: %s\n", $interface->mac; printf "IPv4: %s\n", $interface->ipv4; DESCRIPTION Win32::Interfaces is a module to retrieve Windows interface adapte +r information (such as IP[v6] addresses, gateways, MAC, etc...). It +is implemented with system functions such as "wmic", "netsh" and "arp +". A better approach may be to use XS with "GetAdaptersAddresses()" and + parse the "IP_ADAPTER_ADDRESSES" structure. Alas, that is proving diffic +ult to do. This module was developed since I couldn't find an existing CPAN m +odule that handled this information specifically for Windows, let alone +find Win32 support in the many interface modules already on CPAN (see S +EE ALSO). The existing CPAN interface modules also used different API +s so finding a common interface for both Windows and *nix with all the features was not possible. This modules attempts to provide many of the API calls from *nix interface modules specifically to Win32. [...]

And a pretty extensive demonstration:

use strict; use warnings; use Win32::Interfaces; # Assumes the existence of "Local Area Connection" interface as defaul +t my $W32interfaces = Win32::Interfaces->new(); my @interfaces = $W32interfaces->interfaces(); for my $if (@interfaces) { my $interface = $W32interfaces->interface($if); if (!defined($interface)) { print Win32::Interfaces->error . "\n" } else { print "\n"; printf "Name: %s\n", $interface->name + if $interface->name; printf "Description: %s\n", $interface->description + if $interface->description; printf "Adapter: %s\n", $interface->adaptername + if $interface->adaptername; printf "Device: %s\n", $interface->device + if $interface->device; printf "ifIndex: %s\n", $interface->ifindex + if $interface->ifindex; printf "MAC: %s\n", $interface->mac + if $interface->mac; printf "IPv4: %s\n", $interface->ipv4 + if $interface->ipv4; printf "IPv4 netmask: %s\n", $interface->ipv4_netmask + if $interface->ipv4_netmask; printf "IPv4 gateway: %s\n", $interface->ipv4_default_gate +way if $interface->ipv4_default_gateway; printf "IPv4 gateway MAC: %s\n", $interface->ipv4_gateway_mac + if $interface->ipv4_gateway_mac; printf "IPv4 MTU: %s\n", $interface->ipv4_mtu + if $interface->ipv4_mtu; printf "IPv6: %s\n", $interface->ipv6 + if $interface->ipv6; printf "IPv6 link-local: %s\n", $interface->ipv6_link_local + if $interface->ipv6_link_local; # printf "IPv6 DHCPv6 IAID: %s\n", $interface->dhcpv6_iaid + if $interface->dhcpv6_iaid; # printf "IPv6 DHCPv6 DUID: %s\n", $interface->dhcpv6_duid + if $interface->dhcpv6_duid; printf "IPv6 gateway: %s\n", $interface->ipv6_default_gate +way if $interface->ipv6_default_gateway; printf "IPv6 gateway MAC: %s\n", $interface->ipv6_gateway_mac + if $interface->ipv6_gateway_mac; printf "IPv6 MTU: %s\n", $interface->ipv6_mtu + if $interface->ipv6_mtu; printf "MTU: %s\n", $interface->mtu + if $interface->mtu; printf "DNS Server %s\n", $interface->dnsserver + if $interface->dnsserver; print "\n"; print $interface->dump; printf "\nDONE - %s\n", $interface->name if $interface->name; } }

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1152975]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (4)
As of 2024-04-25 05:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found