CI / test (3.10) (push) Successful in 27s
CI / test (3.11) (push) Successful in 27s
CI / test (3.12) (push) Successful in 25s
CI / test (3.10) (pull_request) Successful in 29s
CI / test (3.11) (pull_request) Successful in 24s
CI / test (3.12) (pull_request) Successful in 25s
run_command prepended the sudo password to the caller's stdin. A sudo that does not prompt left it for the command, and fix_snmp's 'cat > snmpd.conf' wrote it as the configuration's first line before making the file world-readable. run_command now refuses stdin to a privileged command while a sudo password is set. fix_snmp stages the configuration in a mktemp file without privilege, and root installs it next to the target and renames it over, so nothing root runs follows a symlink. Closes #8
61 lines
3.0 KiB
Markdown
61 lines
3.0 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [Unreleased]
|
|
|
|
## [0.2.1] - 2026-10-16
|
|
|
|
### Fixed
|
|
- A sudo password no longer ends up in `snmpd.conf`. `run_command` sent the
|
|
password and the data on the same stdin, and a sudo that does not prompt
|
|
(NOPASSWD, a cached timestamp) left the password for `cat`, which wrote it
|
|
as the first line of a file then made world-readable (#8). `run_command` now
|
|
refuses stdin to a privileged command while a sudo password is set, and
|
|
`fix_snmp` stages the configuration without privilege before root installs
|
|
it, without following a symlink at the target.
|
|
|
|
## [0.2.0] - 2026-10-13
|
|
|
|
### Changed
|
|
- `get_users` is now `get_os_users`, as napalm-device-types 4.7 names it on
|
|
`OSDriver`; the return shape is unchanged. NAPALM's own `get_users` has
|
|
another shape and a stub on every driver, so a poll asking `hasattr` could
|
|
not tell the two apart. Requires napalm-device-types 4.7.1 or later.
|
|
|
|
## [0.1.0]
|
|
|
|
### Added
|
|
- `FreeBSDDriver` (`freebsd`) and `OpenBSDDriver` (`openbsd`) on a shared
|
|
`BsdDriver`: SSH over exec channels (no PTY, real exit codes), root through
|
|
`sudo -S` with the password on stdin.
|
|
- Read side (NetOrk/netork#798): facts (SMBIOS through `kenv` on FreeBSD,
|
|
`hw.*` sysctls on OpenBSD; uptime from `kern.boottime`), interfaces and
|
|
their addresses (`ifconfig -a`), routes (`netstat -rn`), ARP (`arp -an`),
|
|
users and groups, processes (`ps … lstart`), cron jobs (system crontab and
|
|
the login user's).
|
|
- `get_listening_sockets()` in the shape of `ListeningSocketsMixin`: FreeBSD
|
|
through `sockstat`, OpenBSD through `fstat` as root and `netstat -an`
|
|
without, which the reading reports as `attributed: False`.
|
|
- Packages: `get_packages`, `install_package`, `uninstall_package`. FreeBSD's
|
|
install bootstraps pkg on a classic system that never had it.
|
|
- Updates: `get_available_updates`, with VuXML's verdict as `security` on
|
|
FreeBSD and base-system patches as one `base-system` entry (OpenBSD
|
|
`syspatch`, classic FreeBSD `freebsd-update`). A reader that cannot read
|
|
raises instead of returning no updates (#4).
|
|
- Services: `get_services` and `manage_service` (start, stop, restart,
|
|
enable, disable) through `service` and `rcctl`.
|
|
- SNMP: `run_device_action("fix_snmp")` installs net-snmp, writes the same
|
|
configuration netOrk uses on Linux, starts the agent and asks it for
|
|
sysDescr; `get_snmp_config` reports a running agent's community and port.
|
|
- `get_host_status` (napalm-device-types' `HostStatusMixin`): on FreeBSD,
|
|
"reboot required" when the installed kernel differs from the running one.
|
|
- `first_boot_pending()`: whether a FreeBSD host is still in its first boot
|
|
(`/firstboot`), so netOrk can wait before setting up a new VM
|
|
(NetOrk/netork#795).
|
|
- Parsers tested on output recorded from FreeBSD 15.1 (hand-installed and
|
|
cloud image) and OpenBSD 7.9 (NetOrk/netork#793).
|