nushell-plugins/nu_plugin_port_extension
2025-06-27 02:31:23 +01:00
..
2025-06-27 02:31:23 +01:00
2025-06-27 02:31:23 +01:00
2025-06-27 02:31:23 +01:00
2025-06-27 02:31:23 +01:00
2025-06-27 02:31:23 +01:00
2025-06-27 02:31:23 +01:00
2025-06-27 02:31:23 +01:00
2025-06-27 02:31:23 +01:00
2025-06-27 02:31:23 +01:00

🔌 nu_plugin_port_extension

A Nushell plugin for inspecting open ports and scanning network services. It introduces two subcommands:

  • port list: Lists all open network connections, similar to netstat.
  • port scan: Scans a target IP and port to determine if it is open.

Features

port list List Active Connections

The port list command retrieves all open connections on the network interface. It supports filtering by protocol, IP version, and listening state.

📌 Usage

port list {flags}

⚙️ Available Flags

  • -h, --help → Show help message.
  • -6, --disable-ipv4 → Exclude IPv4 connections (only show IPv6).
  • -4, --disable-ipv6 → Exclude IPv6 connections (only show IPv4).
  • -t, --disable-udp → Exclude UDP connections (only show TCP).
  • -u, --disable-tcp → Exclude TCP connections (only show UDP).
  • -l, --listeners → Show only listening connections (state == "LISTEN").
  • -p, --process-info → Include process details (name, command, binary path).

🔍 Example: Show Active Processes

port list -p | take 1

📊 Example Output

pid type ip_version local_address local_port remote_address remote_port state process_name cmd exe_path
11536 tcp 4 127.0.0.1 1093 127.0.0.1 1108 ESTABLISHED steam.exe [C:\Program Files (x86)\Steam\steam.exe, -silent] C:\Program Files (x86)\Steam\steam.exe

port scan Scan Open Ports

The port scan command checks if a specific port is open on a target IP, similar to nc -vz {ip} {port}.

⚠️ Note: Only TCP scanning is supported at the moment.

📌 Usage

port scan {flags} <target IP> <port>

⚙️ Available Flags

  • -h, --help → Show help message.
  • -t, --timeout <duration> → Set timeout before giving up (default: 60s).
  • -s, --send <string> → Send data to the target upon connection.
  • -b, --receive-byte-count <int> → Number of bytes to receive before confirming the connection is open.

🎯 Parameters

  • target IP (string) The IP address to scan.
  • port (integer) The port number to check.

🔍 Example: Check if Google's Public DNS (8.8.8.8) has Port 53 Open

port scan 8.8.8.8 53 -t 1sec

📊 Example Output

╭─────────┬─────────╮  
│ address │ 8.8.8.8 │  
│ port    │ 53      │  
│ is_open │ true    │  
│ elapsed │ 40ms    │  
╰─────────┴─────────╯  

🔄 Example: Scan a Range of Ports on 127.0.0.1 and Filter Open Ports

7880..8000 | each { |it| port scan 127.0.0.1 $it -t 1ms } | where result == Open

🔧 Installation

This method automatically handles dependencies and features.

git clone https://github.com/FMotalleb/nu_plugin_port_extension.git  
nupm install --path nu_plugin_port_extension -f  

🛠️ Manual Compilation

git clone https://github.com/FMotalleb/nu_plugin_port_extension.git  
cd nu_plugin_port_extension  
cargo build -r  
plugin add target/release/nu_plugin_port_extension  

📦 Install via Cargo (using git)

cargo install --git https://github.com/FMotalleb/nu_plugin_port_extension.git  
plugin add ~/.cargo/bin/nu_plugin_port_extension  

Since I live in Iran and crates.io often restricts package updates, the version there might be outdated.

cargo install nu_plugin_port_extension  
plugin add ~/.cargo/bin/nu_plugin_port_extension