# 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).