Skip to content

nu_plugin_ipscan

Rust · Ethernet · Nushell

Local network discovery with signal.

A fast Rust ARP scanner with a Nushell plugin that turns interface inventories and host discoveries into values you can filter, join, and export.

Linux raw EthernetNu 0.115.1MIT plugin adapter

One scanner, two useful front ends.

ipscan keeps a focused CLI while nu_plugin_ipscan makes its JSON output feel native in Nushell.

Try it yourself

A useful result, right away.

A small taste of the real plugin flow.

nu
auto demo
# Build and register the scanner plugincargo install --path nu-plugin-ipscan --lockedinstalled nu_plugin_ipscanplugin add ~/.cargo/bin/nu_plugin_ipscanadded plugin ipscanplugin use ipscanloaded ipscan# Discover hosts on a local networkipscan --network 192.168.1.0/24 --numericipv4           mac                hostname      vendor
192.168.1.1    91:10:fb:30:06:04  router.home   Example Networks
192.168.1.11   45:2e:99:bc:22:b6  host-a.home
192.168.1.15   bc:03:c2:92:47:df  host-b.home   Example Devices
sample output · structured, consistent, scriptable

Current output surface

The fields that matter.

JSON becomes native Nushell records.

The scanner reports packet counters and discovered hosts, while --list provides a structured inventory for choosing an interface.

RecordRepresentative fieldsWhy it is usefulStatus
resultsipv4, mac, hostname, vendorDiscovered local hostsstable
summarypacket_count, arp_count, duration_msScan health and timingstable
interfacesname, index, mac, ips, is_upInterface selection and inventorystable
exportsJSON, YAML, CSV, plainShell pipelines and reportsavailable

Designed for practical discovery

Keep the packet boundary visible.

01

Raw Ethernet and ARP

Send and decode ARP frames directly through the selected interface instead of depending on a populated neighbour cache.

02

Structured Nu values

Filter vendors, select addresses, and export discoveries without re-parsing terminal-oriented tables.

03

Focused scope

Keep scanning behavior explicit: interface choice, timing, retries, VLANs, DNS, vendor lookup, and output format.

Installation

Ready in a few commands.

Works with the Nushell plugin system.

Build the plugin and standalone scanner, register the plugin, then grant the process the packet privileges your platform requires.

See the full installation guide
# Build both pieces
cargo install --path nu-plugin-ipscan --locked
cargo build --bin ipscan --locked

# Register in Nushell
plugin add ~/.cargo/bin/nu_plugin_ipscan
plugin use ipscan

Examples

Common pipelines.

Records in, useful answers out.

Choose an interface

Keep interfaces that are up and suitable for a scan.

ipscan --list | where is_up and not is_loopback | select name mac ips

Scan a subnet

Use numeric mode when reverse DNS would add noise.

ipscan --network 192.168.1.0/24 --numeric

Find vendor matches

Project the fields needed for an inventory report.

ipscan --network 192.168.1.0/24 --numeric | where vendor != '' | select ipv4 mac vendor

Save machine output

Keep structured results for a later report or join.

ipscan --network 192.168.1.0/24 --numeric | to json | save hosts.json

Documentation

Explore the details.

Learn the install flow, inspect the output schema, and browse the generated Rust API reference.

Open source local-network tooling

Make your shell see more.

Read the plan, try the scanner, and turn local discovery into a repeatable pipeline.

Get started