Add local and NetBox server notes and improve reliability
Release / release (push) Successful in 6m52s
Release / release (push) Successful in 6m52s
This commit is contained in:
1 parent
2852dff2c4
commit
12cc64fdd9
17 files changed
+848
-83
No files matched your search
@@ -20,7 +20,8 @@ netssh -p 2222 admin@app-server-03 uptime
|
||||
- **Interactive TUI** — fuzzy search with live NetBox queries and 300 ms debouncing (start with `netssh`, no arguments)
|
||||
- **Recently-used list** — TUI opens with your 10 most-recently-connected hosts, no typing needed
|
||||
- **Tag/kind filter** — press `Ctrl+F` in the TUI to filter by `tag:prod` or `kind:vm`
|
||||
- **User/port override** — press `e` in the TUI to override the SSH user or port before connecting
|
||||
- **User/port override** — press `Ctrl+E` in the TUI to override the SSH user or port before connecting
|
||||
- **Server notes** — multiline local notes or optional NetBox comments, available in the TUI and CLI
|
||||
- **Persistent cache** — successful lookups are cached to `~/.cache/netssh/hosts.json` for instant shell completion
|
||||
- **Full pagination** — `cache refresh` fetches all hosts from NetBox (not just the first 50)
|
||||
- **Selective refresh** — `cache refresh --tag prod --kind vm` limits what gets synced
|
||||
@@ -235,7 +236,9 @@ The TUI opens with your 10 most-recently-connected hosts. Start typing to search
|
||||
| `Tab` | autocomplete top result into the search field |
|
||||
| `↑` / `↓` | navigate results |
|
||||
| `Enter` | connect to selected host |
|
||||
| `e` | open inline editor to override user/port before connecting |
|
||||
| `Ctrl+E` | open inline editor to override user/port before connecting |
|
||||
| `Ctrl+N` | edit local notes for the selected server |
|
||||
| `Ctrl+B` | edit NetBox comments for the selected server |
|
||||
| `Ctrl+F` | open/close tag and kind filter (`tag:prod kind:vm`) |
|
||||
| `Esc` / `Ctrl+C` | quit (or close filter/edit if open) |
|
||||
|
||||
@@ -247,13 +250,48 @@ Filter: tag:prod kind:vm
|
||||
|
||||
Multiple `tag:` values are AND-combined. The filter is applied locally against the cache; when doing a live NetBox search the first tag is also forwarded as a query parameter.
|
||||
|
||||
**User/port override** — press `e` on any highlighted host:
|
||||
**User/port override** — press `Ctrl+E` on any highlighted host:
|
||||
|
||||
```
|
||||
Connect as: admin@my-router:22
|
||||
```
|
||||
|
||||
Edit the pre-filled value and press `Enter` to connect. `Esc` cancels. Port 22 is treated as default and omitted from the ssh command.
|
||||
Edit the pre-filled value and press `Enter` to connect. `Esc` cancels. The configured default port is pre-filled. An explicit port 22 overrides a different configured default.
|
||||
|
||||
### Server notes
|
||||
|
||||
Select a server in the TUI and press `Ctrl+N` for local notes, or `Ctrl+B` for
|
||||
NetBox comments. Both open a multiline editor: `Ctrl+S` saves, `Esc` cancels.
|
||||
Existing text is loaded before editing. A failed save keeps your draft in the editor.
|
||||
Local notes and NetBox comments are independent; there is no automatic synchronization.
|
||||
|
||||
The CLI also supports reading, replacing, and appending notes:
|
||||
|
||||
```sh
|
||||
netssh notes set web01 "Maintenance on Friday"
|
||||
netssh notes append web01 "Reboot completed"
|
||||
netssh notes show web01
|
||||
printf 'First line\nSecond line\n' | netssh notes set web01
|
||||
netssh notes append web01 --netbox --kind vm "Maintenance completed"
|
||||
netssh notes show web01 --netbox --kind vm
|
||||
```
|
||||
|
||||
`set` replaces the selected note; `append` preserves existing text and adds a new line.
|
||||
Omitting the text reads it from standard input. An empty string clears the note.
|
||||
For an uncached local host, specify `--kind device` or `--kind vm`; local operations
|
||||
work offline. Use the full server name as displayed in the TUI.
|
||||
|
||||
Local notes live under `~/.config/netssh/notes/` (`$XDG_CONFIG_HOME` is respected),
|
||||
with file permissions `0600` and atomic file replacement. They are keyed by NetBox
|
||||
URL, host kind, and hostname, so cache refreshes and `cache clear` preserve them.
|
||||
Changing the hostname or NetBox URL creates a separate note identity.
|
||||
|
||||
`--netbox` explicitly selects the device/VM's shared `comments` field and requires
|
||||
a token with write permissions. Existing comments are loaded before modification;
|
||||
ambiguous names are rejected (specify `--kind` where appropriate).
|
||||
The client uses the API's ETag/If-Match conflict protection when the server provides
|
||||
it; older NetBox versions without ETags use the server's last-write-wins behavior.
|
||||
See the [NetBox REST API documentation](https://netbox.readthedocs.io/en/stable/integrations/rest-api/).
|
||||
|
||||
### Cache management
|
||||
|
||||
|
||||
Reference in new issue
Block a user