{"id":14062766,"url":"https://github.com/nitram509/ntgrrc","last_synced_at":"2025-03-21T21:25:11.574Z","repository":{"id":52379545,"uuid":"479247956","full_name":"nitram509/ntgrrc","owner":"nitram509","description":"ntgrrc (Netgear Remote Control) a command line (CLI) tool to manage Netgear GS3xx switch series.","archived":false,"fork":false,"pushed_at":"2025-02-10T18:24:03.000Z","size":432,"stargazers_count":35,"open_issues_count":3,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-02-10T19:33:56.630Z","etag":null,"topics":["cli","command-line","command-line-tool","gs305ep","gs305epp","gs308ep","gs308epp","gs316ep","gs316epp","hacktoberfest","netgear"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nitram509.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-08T04:49:10.000Z","updated_at":"2025-02-10T18:22:59.000Z","dependencies_parsed_at":"2023-11-14T00:29:01.259Z","dependency_job_id":"993eb6dc-8caf-4a15-8389-7d20b93ab116","html_url":"https://github.com/nitram509/ntgrrc","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitram509%2Fntgrrc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitram509%2Fntgrrc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitram509%2Fntgrrc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitram509%2Fntgrrc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nitram509","download_url":"https://codeload.github.com/nitram509/ntgrrc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244870919,"owners_count":20523954,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","command-line","command-line-tool","gs305ep","gs305epp","gs308ep","gs308epp","gs316ep","gs316epp","hacktoberfest","netgear"],"created_at":"2024-08-13T07:02:14.370Z","updated_at":"2025-03-21T21:25:11.553Z","avatar_url":"https://github.com/nitram509.png","language":"HTML","funding_links":[],"categories":["HTML"],"sub_categories":[],"readme":"# ntgrrc\n\nntgrrc (Netgear Remote Control) a command line (CLI) tool to manage Netgear managed plus switches 300 series.\n\nSince Netgear does not offer a REST API, this tool uses web scraping techniques to\nmanage configuration and show status of the switch.\n\nThis tool is still very limited in its features and more testers and **contributors\nare very welcome**.\n\n### Build Status\n\n[![go test](https://github.com/nitram509/ntgrrc/actions/workflows/go-test.yml/badge.svg)](https://github.com/nitram509/ntgrrc/actions/workflows/go-test.yml)\n[![codecov](https://codecov.io/gh/nitram509/ntgrrc/branch/main/graph/badge.svg?token=8LVPP8JVKY)](https://codecov.io/gh/nitram509/ntgrrc)\n\n### Supported firmware versions\n\nA green tick means it was successfully tested. \n\n| Firmware  | GS305EP(P) | GS308EP  | GS308EPP | GS316EP(P) |\n|-----------|------------|----------|----------|------------|\n| V1.0.0.8  | ✅          | (likely) | ✅        | -          |\n| v1.0.0.10 | ✅          | (likely) | ✅        | -          |\n| V1.0.1.1  | (likely)   | ✅        | (likely) | -          |\n| V1.0.3.4  | -          | -        | -        | ✅          |\n| V1.0.3.7  | -          | -        | -        | ✅          |\n| V1.0.4.4  | -          | -        | -        | ✅          |\n\nLegend: \\\n✅ = successfully tested \\\n`-`  = not available \\\n\n## download \u0026 installation\n\nThis tool is build with the Go programming language\nand pre-build binaries for Windows, Linux, and MacOSX are available for [download](https://github.com/nitram509/ntgrrc/releases).\n\nJust download the fitting binary for your operating system and put it somewhere in your PATH.\n\n## usage\n\n### help\n\n```shell\nntgrrc --help-all\n```\n\n\u003c!-- MARKDOWN-AUTO-DOCS:START (CODE:src=./help.txt) --\u003e\n\u003c!-- The below code snippet is automatically added from ./help.txt --\u003e\n```txt\nUsage: ntgrrc \u003ccommand\u003e [flags]\n\nFlags:\n  -h, --help                  Show context-sensitive help.\n      --help-all              advanced/full help\n  -v, --verbose               verbose log messages\n  -q, --quiet                 no log messages\n  -f, --output-format=\"md\"    what output format to use [md, json]\n  -d, --token-dir=\"\"          directory to store login tokens\n\nCommands:\n  version [flags]\n    show version\n\n  login --address=STRING [flags]\n    create a session for further commands (requires admin console password)\n\n  poe status --address=STRING\n    show current PoE status for all ports\n\n  poe settings --address=STRING\n    show current PoE settings for all ports\n\n  poe set --address=STRING --port=PORT,... [flags]\n    set new PoE settings per each PORT number\n\n  poe cycle --address=STRING --port=PORT,...\n    power cycle one or more PoE ports\n\n  port settings --address=STRING\n    show switch port settings\n\n  port set --address=STRING --port=PORT,... [flags]\n    set properties for a port number\n\n  debug-report --address=STRING [flags]\n    show information from the switch communication, useful for supporting\n    development and bug fixes\n\nRun \"ntgrrc \u003ccommand\u003e --help\" for more information on a command.\n```\n\u003c!-- MARKDOWN-AUTO-DOCS:END --\u003e\n\n### login\n\nFor better performance, **login first**.\nThe login action will store a token to a file called ```$TEMP/.config/ntgrrc/token-12345678```\nand thus subsequent actions will use it and are authenticated.\n\nNote: if you have multiple Netgear switches, ntgrrc **supports multiple parallel tokens**/sessions,\nbecause the token file's name is derived from the provided ```--address``` device name.\n\n```shell\nntgrrc login --address gs305ep --password secret\n```\n\n### show port settings\n\nOnce a session is created, you can fetch port settings.\n\n#### Settings \n\nThe switch's port settings are printed in Markdown table format.\nThis means, separated by | (pipe) and optional suffixes with blanks.\n\nUse the ```--output-format=json``` flag, to get JSON output instead.\n\n```ntgrrc port settings --address gs305ep```\n\n```markdown\n| Port ID | Port Name | Speed | Ingress Limit | Egress Limit | Flow Control | Port Status | Link Speed |\n|---------|-----------|-------|---------------|--------------|--------------|-------------|------------|\n| 1       | XYZ       | Auto  | No Limit      | No Limit     | Off          | AVAILABLE   | No Speed   |\n| 2       |           | Auto  | No Limit      | No Limit     | On           | CONNECTED   | 100M Half  |\n| 3       |           | Auto  | No Limit      | No Limit     | On           | DISABLED    | No Speed   |\n| 4       |           | Auto  | 1 Mbit/s      | No Limit     | On           | AVAILABLE   | No Speed   |\n```\n\n### set port settings\n\nntgrrc is able to set various parameters on switch port(s).\n\n#### Port Name\n\nTo change the port name (within the switch's limit of 1-16 characters), pass the name using `-n` and the desired name in quotes. More than one port number can be provided.\n\nUse the ```--output-format=json``` flag, to get JSON output instead.\n\n```ntgrrc port set -p 1 -n 'port #1' --address gs305ep```\n\n```markdown\n| Port ID | Port Name | Speed | Ingress Limit | Egress Limit | Flow Control |\n|---------|-----------|-------|---------------|--------------|--------------|\n| 1       | port #1   | Auto  | No Limit      | No Limit     | Off          |\n\n```\n\nTo clear the set name, supply an empty, but quoted string. More than one port number can be provided.\n\n```ntgrrc port set -p 1 -n '' --address gs305ep```\n\n```markdown\n| Port ID | Port Name | Speed | Ingress Limit | Egress Limit | Flow Control |\n|---------|-----------|-------|---------------|--------------|--------------|\n| 1       |           | Auto  | No Limit      | No Limit     | Off          |\n```\n\n#### Speed\n\nTo change the port speed, use `-s` and the desired speed ('100M full', '100M half', '10M full', '10M half', 'Auto', 'Disable') in quotes. More than one port number can be provided.\n\nUse the ```--output-format=json``` flag, to get JSON output instead.\n\n```ntgrrc port set -p 1 -s '100M half' --address gs305ep```\n\n```markdown\n| Port ID | Port Name | Speed     | Ingress Limit | Egress Limit | Flow Control |\n|---------|-----------|-----------|---------------|--------------|--------------|\n| 1       |           | 100M half | No Limit      | No Limit     | Off          |\n```\n\n#### In Rate Limit\n\nTo change the in rate limit, use `-i` and the desired rate limit ('1 Mbit/s', '128 Mbit/s', '16 Mbit/s', '2 Mbit/s', '256 Mbit/s', '32 Mbit/s', '4 Mbit/s', '512 Kbit/s', '512 Mbit/s', '64 Mbit/s', '8 Mbit/s', 'No Limit') in quotes. More than one port number can be provided.\n\nUse the ```--output-format=json``` flag, to get JSON output instead.\n\n```ntgrrc port set -p 1 -i '16 Mbit/s' --address gs305ep```\n\n```markdown\n| Port ID | Port Name | Speed | Ingress Limit | Egress Limit | Flow Control |\n|---------|-----------|-------|---------------|--------------|--------------|\n| 1       |           | Auto  | 16 Mbit/s     | No Limit     | Off          |\n```\n\n#### Out Rate Limit\n\nTo change the out rate limit, use `-o` and the desired rate limit ('1 Mbit/s', '128 Mbit/s', '16 Mbit/s', '2 Mbit/s', '256 Mbit/s', '32 Mbit/s', '4 Mbit/s', '512 Kbit/s', '512 Mbit/s', '64 Mbit/s', '8 Mbit/s', 'No Limit') in quotes. More than one port number can be provided.\n\nUse the ```--output-format=json``` flag, to get JSON output instead.\n\n```ntgrrc port set -p 1 -o '16 Mbit/s' --address gs305ep```\n\n```markdown\n| Port ID | Port Name | Speed | Ingress Limit | Egress Limit | Flow Control |\n|---------|-----------|-------|---------------|--------------|--------------|\n| 1       |           | Auto  | 16 Mbit/s     | 16 Mbit/s    | Off          |\n```\n\n#### Flow Control\n\nTo change the flow control setting for a port, use `--flow-control` and the desired setting ('On', 'Off') in quotes. More than one port number can be provided.\n\nUse the ```--output-format=json``` flag, to get JSON output instead.\n\n```ntgrrc port set -p 1 --flow-control 'On' --address gs305epp```\n\n```markdown\nntgrrc port set -p 1 --flow-control 'On' --address test\n| Port ID | Port Name | Speed | Ingress Limit | Egress Limit | Flow Control |\n|---------|-----------|-------|---------------|--------------|--------------|\n| 1       |           | Auto  | 16 Mbit/s     | 16 Mbit/s    | On           |\n```\n\n### show Power Over Ethernet (POE)\n\nOnce a session is created, you can fetch POE settings and status.\n\n#### Settings\n\nThe switch's PoE settings are printed in Markdown table format.\nThis means, separated by | (pipe) and optional suffixes with blanks.\n\nUse the ```--output-format=json``` flag, to get JSON output instead.\n\n```ntgrrc poe settings --address gs316ep```\n\n```markdown\n| Port ID | Port Name        | Port Power | Mode        | Priority | Limit Type | Limit (W) | Type                 | Longer Detection Time |\n|---------|------------------|------------|-------------|----------|------------|-----------|----------------------|-----------------------|\n| 1       | AGER 31 SUR Tech | enabled    | Legacy      | High     | User       | 30.0      | IEEE802              | Disable               |\n| 2       | foobar           | enabled    | 802.3at     | Low      | User       | 30.0      | IEEE802              | Disable               |\n| 3       | zzz              | enabled    | 802.3at     | Low      | User       | 30.0      | 4pt 802.3af + Legacy | Disable               |\n| 4       | uuu              | enabled    | 802.3at     | Low      | User       | 30.0      | IEEE802              | Disable               |\n```\n\n#### Status\n\nThe switch's POE status are printed in Markdown table format.\nThis means, separated by | (pipe) and optional suffixes with blanks.\n\nUse the ```--output-format=json``` flag, to get JSON output instead.\n\n```ntgrrc poe status --address gs305ep```\n\n```markdown\n| Port ID | Port Name | Status           | PortPwr class | Voltage (V) | Current (mA) | PortPwr (W) | Temp. (°C) | Error status |\n|---------|-----------|------------------|---------------|-------------|--------------|-------------|------------|--------------|\n| 1       | Camera    | Delivering Power | 0             | 53          | 82           | 4.40        | 30         | No Error     |\n| 2       |           | Searching        |               | 0           | 0            | 0.00        | 30         | No Error     |\n| 3       |           | Searching        |               | 0           | 0            | 0.00        | 30         | No Error     |\n| 4       |           | Searching        |               | 0           | 0            | 0.00        | 30         | No Error     |\n```\n\n### set Power Over Ethernet (POE)\n\nntgrrc is able to set various parameters on PoE port(s).\n\n#### Port Power\n\nTo enable or disable port power, pass the port number using `-p` and `--power enable` to enable power or `--power disable` to disable power. More than one port number can be provided.\n\nUse the ```--output-format=json``` flag, to get JSON output instead.\n\n```ntgrrc poe set -p 3 -p 4 --power enable --address gs305ep```\n\n```markdown\n| Port ID | Port Name | Port Power | Mode        | Priority | Limit Type | Limit (W) | Type    | Longer Detection Time |\n|---------|-----------|------------|-------------|----------|------------|-----------|---------|-----------------------|\n| 3       |           | enabled    | Legacy      | High     | User       | 30.0      | IEEE802 | Disable               |\n| 4       |           | enabled    | 802.3at     | Low      | User       | 30.0      | IEEE802 | Disable               |\n\n```\n\n#### Port Power Mode\n\nTo change the port power mode, pass the port number using `-p` and `--mode` with the desired power mode (802.3af, legacy, pre-802.3at, 802.3at). More than one port number can be provided.\n\nUse the ```--output-format=json``` flag, to get JSON output instead.\n\n```ntgrrc poe set -p 3 -p 5 --mode legacy --address gs305ep```\n\n```markdown\n| Port ID | Port Name | Port Power | Mode        | Priority | Limit Type | Limit (W) | Type    | Longer Detection Time |\n|---------|-----------|------------|-------------|----------|------------|-----------|---------|-----------------------|\n| 3       |           | enabled    | Legacy      | High     | User       | 30.0      | IEEE802 | Disable               |\n| 4       |           | enabled    | Legacy      | Low      | User       | 30.0      | IEEE802 | Disable               |\n```\n\n#### Port Priority\n\nTo change port priority, pass the port number using `-p` and `--priority` with the desired priority (low, high, critical). More than one port number can be provided.\n\nUse the ```--output-format=json``` flag, to get JSON output instead.\n\n```ntgrrc poe set -p 3 -p 5 --priority critical --address gs305ep```\n\n```markdown\n| Port ID | Port Name | Port Power | Mode        | Priority | Limit Type | Limit (W) | Type    | Longer Detection Time |\n|---------|-----------|------------|-------------|----------|------------|-----------|---------|-----------------------|\n| 3       |           | enabled    | Legacy      | critical | User       | 30.0      | IEEE802 | Disable               |\n| 5       |           | enabled    | Legacy      | critical | User       | 30.0      | IEEE802 | Disable               |\n```\n\n#### Power Limit\n\nTo change the power limit for a port, pass the port number using `-p` and `--pwr-limit` with the desired limit. More than one port number can be provided. \n\nUse the ```--output-format=json``` flag, to get JSON output instead.\n\n```ntgrrc poe set -p 3 -p 5 --pwr-limit 5 --address gs305ep```\n\n```markdown\n| Port ID | Port Name | Port Power | Mode        | Priority | Limit Type | Limit (W) | Type    | Longer Detection Time |\n|---------|-----------|------------|-------------|----------|------------|-----------|---------|-----------------------|\n| 3       |           | enabled    | Legacy      | critical | User       | 5.0       | IEEE802 | Disable               |\n| 5       |           | enabled    | Legacy      | critical | User       | 5.0       | IEEE802 | Disable               |\n```\n\n#### Power Limit Type\n\nTo change the power limit type for a port, pass the port number using `-p` and `--limit-type` with the desired limit type (none, class, user). More than one port number can be provided.\n\nUse the ```--output-format=json``` flag, to get JSON output instead.\n\n```ntgrrc poe set -p 3 -p 5 --limit-type class --address gs305ep```\n\n```markdown\n| Port ID | Port Name | Port Power | Mode        | Priority | Limit Type | Limit (W) | Type    | Longer Detection Time |\n|---------|-----------|------------|-------------|----------|------------|-----------|---------|-----------------------|\n| 3       |           | enabled    | Legacy      | critical | class      | 30.0      | IEEE802 | Disable               |\n| 5       |           | enabled    | Legacy      | critical | class      | 30.0      | IEEE802 | Disable               |\n```\n\n#### Detection type\n\nTo change the detection type for a port, pass the port number using `-p` and `--detect-type` with the desired detection type. More than one port can be provided.\n\nUse the ```--output-format=json``` flag, to get JSON output instead.\n\n```ntgrrc poe set -p 3 -p 5 --detect-type \"4pt 802.3af + Legacy\" -a gs305ep```\n\n```markdown\n| Port ID | Port Name | Port Power | Mode        | Priority | Limit Type | Limit (W) | Type                 | Longer Detection Time |\n|---------|-----------|------------|-------------|----------|------------|-----------|----------------------|-----------------------|\n| 3       |           | enabled    | Legacy      | critical | User       | 30.0      | 4pt 802.3af + Legacy | Disable               |\n| 5       |           | enabled    | Legacy      | critical | User       | 30.0      | 4pt 802.3af + Legacy | Disable               |\n```\n\n#### cycle Power Over Ethernet (POE)\n\nntgrrc is able to power cycle one or more PoE ports.\n\nUse the ```--output-format=json``` flag, to get JSON output instead.\n\n```ntgrrc poe cycle -p 3 -p 5 --address gs305ep```\nAlternativly, you can achieve the same request with this\n```ntgrrc poe cycle --address gs305ep --port=3,5```\n\n```markdown\n| Port ID | Port Name        | Status           | PortPwr class | Voltage (V) | Current (mA) | PortPwr (W) | Temp. (°C) | Error status |\n|---------|------------------|------------------|---------------|-------------|--------------|-------------|------------|--------------|\n| 3       | Camera           | Delivering Power |               | 54          | 24           | 1.30        | 30         | No Error     |\n| 5       | Sensor           | Searching        |               | 0           | 0            | 0.00        | 30         | Power Denied |\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitram509%2Fntgrrc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnitram509%2Fntgrrc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitram509%2Fntgrrc/lists"}